我試圖在保持數字順序的同時生成數字列表的所有n項組合。因此,例如,如果該列表是獲取列表python的所有已排序組合
[1,2,3,4]
長度3的有序組合將是:
[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
爲了清楚起見,我要保持的數字順序,所以[1,4,2]不會是一個理想的結果。
有沒有這樣做的函數,或者一個快速的算法可以完成它?實際列表是111,我將選擇100個項目。謝謝。
我試圖在保持數字順序的同時生成數字列表的所有n項組合。因此,例如,如果該列表是獲取列表python的所有已排序組合
[1,2,3,4]
長度3的有序組合將是:
[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
爲了清楚起見,我要保持的數字順序,所以[1,4,2]不會是一個理想的結果。
有沒有這樣做的函數,或者一個快速的算法可以完成它?實際列表是111,我將選擇100個項目。謝謝。
你只是在尋找長度爲n的給定列表的所有組合?如果是這樣,你可以使用itertools的組合。無論哪種方式,你可能會想與itertools。
from itertools import combinations
numbers = [1,2,3,4]
for item in combinations(numbers, 3):
print sorted(item)
我不確定他是否想要排列或組合?如果事實證明OP想組合,我會刪除我的帖子。 – user590028 2014-09-03 18:11:37
@ user590028是的,我最初認爲是排列,但是當我看到預期的輸出時,它指向組合。不過,我認爲他想要的是組合,同時保留它們出現在列表中的順序。例如,你可以有[1,3,4]但不是[3,1,4]。 – 2014-09-03 18:13:29
頂針是正確的。我想要組合,同時保持順序,這就是爲什麼itertools中的純組合或排列函數都不能滿足需要。 – TomR 2014-09-03 18:23:04
您使用了單詞組合,但是您描述了排列(排列保留順序)。你能澄清嗎? – user590028 2014-09-03 18:12:51
排列意味着訂單很重要,但它不保留數字順序,所以它也會從上面的列表中產生[2,4,1],這不是我所需要的。 – TomR 2014-09-03 18:24:19