2010-12-13 6 views
5

में एक अनुमत वर्डलिस्ट के सबसेट जेनरेट करना मेरे पास शब्दों की एक सूची है और मुझे इनमें से सभी चेतावनी उत्पन्न करने की आवश्यकता है, एक चेतावनी के साथ।पायथन

मैं वर्तमान में निम्न कोड का उपयोग करें:

from itertools import permutations 

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

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

जो उत्पादन देता है:

word1word2word3 
word1word3word2 
... 
word3word2word1 

हालांकि मैं भी इस तरह के रूप में, यह सबसेट इन शब्दों मुद्रित करने के लिए की जरूरत है:

word1  
word1word2 
word2word1 
... 

लेकिन मुझे थोड़ा सा विचार नहीं है कि यह कैसे करें। मैं कहां से शुरू करूं? मुझे क्या पढ़ना चाहिए?

+0

कोशिश के लिए लिखा गया था नाम 'list' का उपयोग कर से बचने के लिए, क्योंकि' list' निर्मित एक समारोह है कि सूची में iterables परिवर्तित करता है। –

+0

ओह धन्यवाद, मुझे यह नहीं पता था। यह बताता है कि जब मैंने प्रारंभ में इस कोड को लिखा था तो मेरी पुनरावृत्ति को सूची में बदलने की कोशिश क्यों नहीं कर रही थी। रवींद्र! मैं इसकी सराहना करता हूं। अगर किसी और को इस समस्या का सामना करना पड़ता है, तो मैंने इसे प्रतिबिंबित करने के लिए मूल पोस्ट संपादित कर लिया है। –

+1

इसे पावरसेट कहा जाता है (लगभग - पावरसेट में खाली सेट भी शामिल है) –

उत्तर

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

यहाँ फ़ाइल आई/ओ के साथ एक अधिक पूर्ण कार्यान्वयन है। धन्यवाद स्टीव, मैंने स्वयं को आपके उत्तर पर आधारित किया। इस कोड, अन्य पदों के विपरीत, पायथन 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()