我想數組排序,所以它在重新排序在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()'工作.. –
你想要所有的「旋轉」還是所有的「排列」? –
你想產生所有可能的排列,或者你想找到一個特定的排列,並停止搜索? –