我想数组排序,所以它在重新排序在python数组
order = [0,1,2,3,4,5] #loop around trying all columns`
开头,然后会经过,想这使1,2,3,4,5,0所有组合一旦它尝试了所有这些,就停下来。
有没有办法在Python中做到这一点?
我想数组排序,所以它在重新排序在python数组
order = [0,1,2,3,4,5] #loop around trying all columns`
开头,然后会经过,想这使1,2,3,4,5,0所有组合一旦它尝试了所有这些,就停下来。
有没有办法在Python中做到这一点?
如果你只是想“旋转”的列表,看看在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])
>>>
如果你的意思所有排列,而不是在多米尼克的答案转:
import itertools
permutations = [ p for p in itertools.permutations(order) ]
总共有720个排列,所以我不会打印它们:)
'[p for
当然,根据他想要对排列做什么,他可能不需要将它们存储在列表中。在这种情况下,直接迭代itertools.permutations(order)会更好。好点子! –
'order.sort()'工作.. –
你想要所有的“旋转”还是所有的“排列”? –
你想产生所有可能的排列,或者你想找到一个特定的排列,并停止搜索? –