如何像使用嵌套的for循环一样遍历任意数量的列表?

时间:2018-09-29 20:12:13

标签: python algorithm

假设我有以下列表,如何实现:

LIST1 LIST2 LIST3

1 1 1

2 2 2

3 3 3

。 。

。 。

我希望迭代的行为如下:

1,1,1

1,1,2

1,1,3

1,2,1

1,2,2

1,2,3

1,3,1

1、3、2

1、3、3

2,1,1

这是三个列表将会发生的演示,但是在我的实际用例中,我并不预先知道列表的数量。

2 个答案:

答案 0 :(得分:3)

  

如果我们不预先知道列表的数量怎么办?

在这种情况下,假设您有一个容器itertools.product可以容纳任意数量的列表,则可以使用lists

演示:

>>> from itertools import product
>>> 
>>> lists = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> for value in product(*lists):
...     print(value)
... 
(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 2, 1)
(1, 2, 2)
(1, 2, 3)
(1, 3, 1)
(1, 3, 2)
(1, 3, 3)
(2, 1, 1)
(2, 1, 2)
(2, 1, 3)
(2, 2, 1)
(2, 2, 2)
(2, 2, 3)
(2, 3, 1)
(2, 3, 2)
(2, 3, 3)
(3, 1, 1)
(3, 1, 2)
(3, 1, 3)
(3, 2, 1)
(3, 2, 2)
(3, 2, 3)
(3, 3, 1)
(3, 3, 2)
(3, 3, 3)

答案 1 :(得分:1)

这是循环的简单迭代。 在python中,您可以继续使用3个循环:

    for a in list1:
        for b in list2:
             for c in list3:
                  print(a,b,c)