2012-02-18 57 views
9

注意:我正在python上工作。如何在給定N個項目列表的情況下生成長度爲LEN的排列?

例如,給出一個列表:

list = ['a','b','c','d','e','f','g','h','i','j'] 

我要生成列表的所有可能的3項組合的列表:

['a','b','c'], 
['a','b','d'], 
['a','b','e'] 

的排列不應該使用同一項目兩次在排列中,但順序很重要,並且代表應該包括的不同排列,例如,

['a','b','c'], 
['a','c','b'] 

兩者都應包括在內。

「3」是我期望生成的排列的魔術長度,但我不會在任意長度排列的解決方案上看不起。

感謝您的幫助!

+1

你有沒有想過這個問題呢?有沒有一點讓你陷入困境? – simchona 2012-02-18 02:47:07

+2

我討厭這麼說,但是google搜索「permutations python list」給了http://docs.python.org/library/itertools.html。 – simchona 2012-02-18 02:49:58

+0

其他人已經回答了,但是,我想了一下,但是在與此項目相關的其他方面之後,我進入了大腦鎖定狀態,並且無法想象用過多的蠻力方法醜陋。 – Promethean 2012-02-18 02:53:33

回答

13
itertools.permutations(my_list, 3) 
+0

啊,謝謝!我不知道這個模塊!這就是我沒有保持最新的版本變化! (我的編程需求是一年的幾個小程序) – Promethean 2012-02-18 02:52:06

12

假設你在Python 2.6或更高版本:

from itertools import permutations 
for i in permutations(your_list, 3): 
    print i 
+0

謝謝,我用3.2保持發行版的最新版本,但是我的學習版本在2.2之前,所以我沒有意識到這一點。 – Promethean 2012-02-18 03:01:12

+0

Itertools是你的朋友! – michaelfilms 2012-02-18 03:02:22

+0

耶穌在Python中的工具是驚人的。想象一下在C或C++中這樣做 – 2012-02-18 03:54:13

相關問題