reduce函数中可以有两个可迭代项吗?(Python)



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

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

(qcla是初始化器)

这里,compose是内部qiskit函数,x和y是列表circli(可迭代)的元素。我想知道我是否可以在这个reduce函数中添加另一个可迭代函数?这里,(y,c)中的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将与示例中的相同。

最新更新