可能重複:
How to generate all permutations of a list in PythonPython列表排列
我給出一個列表[1,2,3]
和任務是創建這個列表的所有可能的排列。
預期輸出:
[[1, 2, 3], [1, 3, 2], [2, 3, 1], [2, 1, 3], [3, 1, 2], [3, 2, 1]]
我也別想從哪裏開始。誰能幫忙?
感謝
可能重複:
How to generate all permutations of a list in PythonPython列表排列
我給出一個列表[1,2,3]
和任務是創建這個列表的所有可能的排列。
預期輸出:
[[1, 2, 3], [1, 3, 2], [2, 3, 1], [2, 1, 3], [3, 1, 2], [3, 2, 1]]
我也別想從哪裏開始。誰能幫忙?
感謝
itertools.permutations這是否適合你。否則,一個簡單的方法就是遞歸地查找排列:您先後選擇輸出的第一個元素,然後讓您的函數查找其餘元素的所有排列。
略有不同,但類似的解決方案可在https://stackoverflow.com/a/104436/42973找到。它查找剩餘(非第一個)元素的所有排列,然後在所有可能的位置連續插入第一個元素。
這是一個基本的解決方案... 這個想法是使用遞歸遍歷所有的排列並拒絕非有效的排列。
def perm(list_to_perm,perm_l,items,out):
if len(perm_l) == items:
out +=[perm_l]
else:
for i in list_to_perm:
if i not in perm_l:
perm(list_to_perm,perm_l +[i],items,out)
a = [1,2,3]
out = []
perm(a,[],len(a),out)
print out
輸出:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
這是家庭作業,是不是... –
甚至沒有與爲您完成此功能? –
是這是一個功課 – HussainNagri