在python中重新排序数组

时间:2014-01-28 11:43:43

标签: python

我想对数组进行排序,因此它从

开始
order = [0,1,2,3,4,5]  #loop around trying all columns`

然后将通过尝试所有1,2,3,4,5,0等的组合,并在尝试了所有这些组合后停止。

有没有在python中这样做?

2 个答案:

答案 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种排列,所以我不打印它们:)