我想对数组进行排序,因此它从
开始order = [0,1,2,3,4,5] #loop around trying all columns`
然后将通过尝试所有1,2,3,4,5,0等的组合,并在尝试了所有这些组合后停止。
有没有在python中这样做?
答案 0 :(得分:3)
如果您只想“旋转”列表,请查看deque
类:
>>> from collections import deque
>>> order = [0,1,2,3,4,5]
>>> order.sort() # ensure order is sorted
>>> q = deque(order)
>>> for _ in xrange(len(q)):
... q.rotate(-1)
... print q
...
deque([1, 2, 3, 4, 5, 0])
deque([2, 3, 4, 5, 0, 1])
deque([3, 4, 5, 0, 1, 2])
deque([4, 5, 0, 1, 2, 3])
deque([5, 0, 1, 2, 3, 4])
deque([0, 1, 2, 3, 4, 5])
>>>
答案 1 :(得分:2)
如果你的意思是所有排列,而不是Dominic答案中的轮换:
import itertools
permutations = [ p for p in itertools.permutations(order) ]
总共有720种排列,所以我不打印它们:)