2012-02-18 7 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

+2

私はそれを言いたくはありませんが、グーグルの "permutations python list"はhttp://docs.python.org/library/itertools.htmlです。 – simchona

+0

誰か他の人が既に答えていましたが、私は考えましたが、これが関連するプロジェクトの他の側面の後で、私は脳のロックに入っていました。醜さ。 – Promethean

答えて

13
itertools.permutations(my_list, 3) 
+0

ああ、ありがとう!私はそのモジュールを知らなかった!それは私が新しいバージョンの変更を最新に保たないために得られるものです! (私のプログラミングニーズは年に数回の小さなプログラムです) – Promethean

12

あなたは、Python 2.6以降にいると仮定:

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

ありがとう、私はディストリビューションを3.2に保ちますが、私の学習は2.2より前でしたので、これは認識していませんでした。 – Promethean

+0

Itertoolsはあなたの友人です! – michaelfilms

+0

イエスキリストのツールは素晴らしいです。 CまたはC++でこれを行うと想像してください –

0

あなたはitertoolsモジュールからpermutations機能を使用する必要があります。

>>> import itertools 
>>> lst = ['a','b','c','d','e','f','g','h','i','j'] 
>>> itertools.permutations(lst, 3) 

または、実際に組み合わせを取得する場合は、combinations機能を使用してください。

関連する問題