我有一个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]
等
答案 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
被提升之前继续这样做。