Python结构化循环多个项目

时间:2017-08-18 18:27:09

标签: python loops for-loop

我想循环三个列表

['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

我对如何做到这一点毫无头绪。

2 个答案:

答案 0 :(得分:2)

因为你想保持'与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)]

答案 1 :(得分:1)

您可以使用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