我可以在 reduce 函数中有两个 iterables 吗? (Python)
Can I have two iterables in the reduce function? (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 函数修改为 return 一个元组。例如:
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
创建成对的 circli
和 cs
项,您可以浏览这些对。在这种情况下,我也得到了 c
值的 x 坐标之和作为结果。
如果 cs
中的值是示例中的常量 c
(cs = [c]*len(circli)
) ,则结果中的 a
将与示例中的相同.
假设我有以下命令(使用 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 函数修改为 return 一个元组。例如:
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
创建成对的 circli
和 cs
项,您可以浏览这些对。在这种情况下,我也得到了 c
值的 x 坐标之和作为结果。
如果 cs
中的值是示例中的常量 c
(cs = [c]*len(circli)
) ,则结果中的 a
将与示例中的相同.