如何遍历 python 中的三个列表

How to iterate through three lists in python

这里共有 python 个菜鸟。我希望遍历三个列表,其中前两个列表应该以所有可能的方式重新组合,而第三个列表中的每个组合只附加一个值。到目前为止,我得到了:

import itertools

list1 = [1,2,3]
list2 = [1,2,3]
list3 = [1,2,3,4,5,6,7,8,9]

for x, y, in itertools.product(list1, list2):
    print x, y, list3

这个returns:

1 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 2 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 3 [1, 2, 3, 4, 5, 6, 7, 8, 9]
2 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
2 2 [1, 2, 3, 4, 5, 6, 7, 8, 9]
2 3 [1, 2, 3, 4, 5, 6, 7, 8, 9]
3 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
3 2 [1, 2, 3, 4, 5, 6, 7, 8, 9]
3 3 [1, 2, 3, 4, 5, 6, 7, 8, 9]

但是,我希望它 return 以下内容:

1 1 1
1 2 2
1 3 3
2 1 4
2 2 5
2 3 6
3 1 7
3 2 8
3 3 9

我怎样才能得到这个结果?

并行迭代两个集合通常使用 zip:

import itertools

list1 = [1,2,3]
list2 = [1,2,3]
list3 = [1,2,3,4,5,6,7,8,9]

for (x, y), z in zip(itertools.product(list1, list2), list3):
    print x, y, z

结果:

1 1 1
1 2 2
1 3 3
2 1 4
2 2 5
2 3 6
3 1 7
3 2 8
3 3 9

或者,如果 list3 总是 [1,2,3... some int],您可以完全丢弃它并只使用 enumerate.

import itertools

list1 = [1,2,3]
list2 = [1,2,3]

for idx, (x, y) in enumerate(itertools.product(list1, list2), 1):
    print x, y, idx