使用python获取列表的排列

时间:2014-12-30 16:55:01

标签: python list loops combinations permutation

我们假设我有一个列表a:

a = [0, 0, [0, 1], [0, 1, 2]]

其中a可以是任意长度,其成分可以是任意长度,我想生成一个新列表,可以是值的任意组合,以便我将返回给定示例:

b = [[0,0,0,0],
     [0,0,0,1],
     [0,0,0,2], 
     [0,0,1,0],
     [0,0,1,1],
     [0,0,1,2]]

我认为这只是一个循环问题,但我会感激任何帮助。

由于

1 个答案:

答案 0 :(得分:4)

使用itertools.product

>>> import itertools
>>> a = [0, 0, [0, 1], [0, 1, 2]]
>>> a2 = [x if isinstance(x, list) else [x] for x in a]
>>> #  = [[0], [0], [0, 1], [0, 1, 2]]
>>> list(itertools.product(*a2))
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 1, 0), (0, 0, 1, 1), (0, 0, 1, 2)]