我可以在 reduce 函数中有两个可迭代对象吗? Python

问题描述

假设我有以下命令(使用 Python 和 Qiskit):

a = reduce(lambda x,y: x.compose(y,c),circli,qcla)

qcla一个初始化器)

这里,compose 是内部qiskit 函数,x 和y 是列表circli(可迭代)的元素。我想知道我是否可以在此 reduce 函数添加一个可迭代对象?在这里c 中的 (y,c) 本身代表一个坐标,例如 [2,3],我希望它也能更新。我可以创建另一个包含所有可能的 c 的列表并将其添加为另一个可迭代对象吗?谢谢!

解决方法

可以减少对的列表(可迭代)并在最后创建一个对。对于第一个,您需要 zip 函数,对于后一个,您需要修改 lambda 函数以返回一个元组。例如:

a,x_sum = reduce(lambda x,y: (x[0].compose(y[0],y[1]),x[1][0]+y[1][0]),zip(circli,cs),(qcla,0))

我在这里使用名称 cs 作为 c 值的列表。

zip 创建成对的 circlics 项,您可以遍历这些对。在这种情况下,我也得到 c 值的 x 坐标之和作为结果。

如果 cs 中的值是示例中的常量 c (cs = [c]*len(circli)),则结果中的 a 将与示例中的相同。