在python列表中找到所有可能的组合序列

时间:2015-09-22 19:41:29

标签: python list sequence

我有一个Python列表

mylist = [0, 1, 2, 3, 4, 5]

其中0是开始,5是结束。 我想知道是否有办法在0到5之间创建所有可能的序列,例如:

mylist1 = [0, 2, 1, 3, 4, 5]
mylist2 = [0, 3, 2, 1, 4, 5]
mylist3 = [0, 4, 3, 2, 1, 5]
mylist4 = [0, 2, 1, 3, 4, 5]
mylist5 = [0, 3, 2, 1, 4, 5]

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.permutations

In [1]: import itertools

In [2]: l = [0, 1, 2, 3, 4, 5]

In [3]: tuple(itertools.permutations(l))
Out[3]: 
((0, 1, 2, 3, 4, 5),
 (0, 1, 2, 3, 5, 4),
 (0, 1, 2, 4, 3, 5),
 (0, 1, 2, 4, 5, 3),
 (0, 1, 2, 5, 3, 4),
 ....

答案 1 :(得分:0)

您应该使用itertools.permutations,如下所示:

import itertools
gen = itertools.permutations([1, 2, 3, 4, 5, 6])
print gen.next()  # prints (1, 2, 3, 4, 5, 6)
print gen.next()  # prints (1, 2, 3, 4, 6, 5)
print gen.next()  # prints (1, 2, 3, 5, 4, 6)

StopIteration被提升之前继续这样做。