Python 结构化循环多个项目



我想遍历三个列表

['A','B'],[1,2],[3,4]

如果我想遍历所有可能性,我可以这样做:

for i,j,k in zip(['A','B'],[1,2],[3,4])

但是,我想以某种方式循环。我想迭代'A',1 and 'B',2最后一个列表的所有可能值。因此,我想排除组合

'A',2 and 'B',1.

基本上我想生成以下项目。'A',1,3 'A',1,4 'B',2,3 B',2,4

我不知道该怎么做。

因为你想把"a"和1绑在一起,把'b'和2绑在一起,所以你应该把前两个列表压缩在一起。而且因为无论你在第一部分做出哪个选择,你都想迭代 3 和 4,所以这应该是一个单独的迭代,而不是 zip 的一部分。

[(i,j,k) for k in [3, 4] for i,j in zip(['a', 'b'], [1, 2])]
# [('a', 1, 3), ('b', 2, 3), ('a', 1, 4), ('b', 2, 4)]

您可以使用itertools.product

from itertools import product
for a,b in product(zip(l1,l2), l3):
print (a[0], a[1], b)
A 1 3
A 1 4
B 2 3
B 2 4

最新更新