爲了避免巨大的內存需求,使用itertools.combinations
以每次生成一個單一的輸出,處理「鎖定」爲您提供:
from future_builtins import map # Not needed on Py3, only on Py2
from itertools import combinations
w = 'abcdefghijklmnopqrstuvwxyz'
# Don't use input on Py2; it's an implicit eval, which is terrible
# raw_input gets str, and you can explicitly convert to int
n = int(raw_input("# of characters: "))
# You want 1-n inclusive on both ends, not 0-n exclusive at the end, so tweak range
for wdlen in xrange(1, n+1):
# Generator based map with ''.join efficiently converts the tuples
# from combinations to str as you iterate
for wd in map(''.join, combinations(w, wdlen)):
print wd
您可以使用內置模塊嗎?特別是'itertools'會大大簡化這個過程。 – ShadowRanger
我可以使用內置模塊。我很新,所以我不知道他們是什麼,或者每個人的能力。 – lineman2208
然後,我會看看['itertools'](https://docs.python.org/2/library/itertools.html),特別是[組合函數](https://docs.python .ORG/2 /庫/ itertools.html#itertools.combinations)。對於記錄來說,將'tuple'這個函數的輸出轉換成'str'的一個生成器的一個有效方法是將它包裝起來,改變itertools.combinations(...)中的tupval [ :'to'for itertools.imap(''。join,itertools.combinations(...))中的strval:'所以你甚至不會看到'tuple';它們在製作時會轉換回「str」。 – ShadowRanger