2010-12-13 7 views
5

私は単語のリストを持っており、これらのすべての可能な順列を生成する必要があります。Pythonで並べ替えられた単語リストのサブセットを生成する

私は現在、次のコードを使用

:私もそれがサブセットにこれらの単語を印刷する必要があるしかしなど、

word1word2word3 
word1word3word2 
... 
word3word2word1 

word1  
word1word2 
word2word1 
... 

from itertools import permutations 

wordlist = ["word1", "word2", "word3"] 

for perm in permutations(wordlist): 
    print "".join(perm) 

出力を提供します

しかし、私はこれをどうやってやっているのかちょっと考えていません。 どこから始めますか?私は何を読むべきですか?

+0

のために書かれました。 –

+0

ああ、ありがとう、私はそれを知らなかった。これは、私が最初にこのコードを書いたときに、自分のイテレートをリストに変換しようとするのがなぜ機能しないのかを説明します。ドー!それは有り難いです。他の誰かがこの問題に遭遇した場合に備えて、これを反映するために元の投稿を編集しました。 –

+1

これはpowersetと呼ばれています(ほとんどの場合、powersetには空のセットも含まれます) –

答えて

5

編集:

from itertools import permutations 

xlist = ["word1", "word2", "word3"] 

for n in range(1, len(xlist)+1): 
    for perm in permutations(xlist, n): 
     print "".join(perm) 

編集:出力:ここ

word1 
word2 
word3 
word1word2 
word1word3 
word2word1 
word2word3 
word3word1 
word3word2 
word1word2word3 
word1word3word2 
word2word1word3 
word2word3word1 
word3word1word2 
word3word2word1 
+0

ありがとう、ちょうど私が必要とするもの。私たちは両方とも最初のバグを同時に発見したと思います。私は答えましたが、それが修正されたことに気付きました。ありがとうございました。 –

+0

ええ、それについて申し訳ありません。どういたしまして。 –

0

は、ファイルI/Oとのより完全な実装です。 スティーブさん、ありがとうございました。 このコードは、他の記事とは異なり、list`がリストに反復可能オブジェクトに変換組み込み関数である `ので、名前` list`を使用しないようにしてくださいPythonの3.3.4

from itertools import permutations 
import os 

# GET FILE 
script_dir = os.path.dirname(os.path.realpath(__file__)) 
wordlist_rel_path = "wordlist.txt" 
wordlist_abs_file_path = os.path.join(script_dir, wordlist_rel_path) 

# READ WORD LIST FROM FILE 
word_list = [] 
print ("\ninput file is:", wordlist_abs_file_path,"\n") 
with open(wordlist_abs_file_path) as wordlist: 
    for line in wordlist: 
     word_list.append(line.rstrip()) 

# PRINT INPUT LIST 
print ("input list contains:") 
print(word_list,"\n") 

# GENERATE POWERSET 
powerset_list = [] 
print ("output list is:") 
for n in range(1, len(word_list)+1): 
    for perm in permutations(word_list, n): 
     powerset_list.append("".join(perm)) 
print(powerset_list) 

# WRITE LIST TO FILE 
powerset_rel_path = "powerset.txt" 
powerset_abs_file_path = os.path.join(script_dir, powerset_rel_path) 
powerset_abs_file = open(powerset_abs_file_path, 'w') 
for item in powerset_list: 
    powerset_abs_file.write("%s\n" % item) 
powerset_abs_file.close() 
関連する問題