如何以Python格式生成包含指定值的exhuastive组合的可变长度列表?

时间:2017-05-04 16:01:21

标签: python

我希望有一个' Pythonic'这样做的方式。让我们说我有一个列表和一个整数。

foo = [1, 2]
bar = 2

我想返回一系列列表,其中每个列表是由整数(或长度-1)指定的长度,其中列表表示列表中每个可能的值组合的表达式。因此,例如,我正在寻找的输出将是这样的:

>> [[1, 1], [1, 2], [2, 1], [2, 2]]

如果bar等于3,则:

>> [[1, 1, 1], [1, 1, 2], [1, 2, 2], [2, 1, 2], [2, 2, 1], [1, 2, 1], [2, 1, 1], [2, 2, 2]]

......等等。

1 个答案:

答案 0 :(得分:2)

>>> import itertools
>>> foo = [1,2]
>>> list(itertools.product(foo, repeat=2))
[(1, 1), (1, 2), (2, 1), (2, 2)]
>>> list(itertools.product(foo, repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
>>>