だから私はそれらの可能性小文字のすべての組み合わせが'_'
文字に置換されるまで、その下の再帰関数は、アルファベットの各小文字で'_'
文字を置き換える続けています。再帰的アルゴリズムは - との新しいリストを作成する対延長「+」
簡単な例:
repl_underscores('__A')
>>>[a_A,b_A,c_A......aaA,abA,acA....zzA]
私は以下のコメントが同じに変更し、言及してリストを構築するために延長での作業この機能を持っていました既存のリストをその場で繰り返して、その仕事を達成する。
実際には、同じ結果を得ることを目的として、各呼び出しで新しいリストを作成し、その結果を連続する再帰呼び出しに渡すために書き直したかったのです。
これはうまくいかず、各呼び出しで新しいリストを作成しているという事実と関係がありますが、再帰呼び出しのたびに組み立てられたバージョンを渡していたのでそれらの呼び出しに変更が通知されるのでOKです。
どこが壊れているかわかりません。私は同じリスト(変更可能なデフォルト、グローバル変数、または拡張のいずれかを介して)を変更することによって動作させることができますが、再帰するたびに新しいクリーンリストを構築したいと思います。
def repl_underscores(letters,res=None):
if res is None: res = list()
if '_' not in letters: return res
repl = [letters.replace('_',letter,1) for letter in string.ascii_lowercase]
res = res + repl #using += works, due to extending being a mutation (same list referenced at each call)
for each in repl:
repl_underscores(each,res) #trying to pass modified list to keep building up
return res
print(repl_underscores('__DER'))
あなたは何が起こっているかを確認するために '' 'print'''ステートメントを使用してみましたか? – wwii