2011-09-13 18 views
0

余分な変数を使用する必要がないようにコードを変換したい(例:下の例ではs)。イテレーターを使用する方法があることはわかっていますが、私は方法がわかりません。誰かが助けることができますか?本当にありがとう。Pythonの反復関数でイテレータを使用する方法は?

from numbers import Number 

a = [[[1,2],[3,4]],[[5,6],[7,8]]] 


def trav(root,s): 
    if isinstance(root,Number): 
     print(str(root) + " -> " + s) 
    else: 
     s = s + "0" 
     trav(root[0],s) 
     s = s[:-1] 

     s = s + "1" 
     trav(root[1],s) 
     s = s[:-1] 

s = "" 
trav(a,s) 
+1

これはバイナリツリーです。 –

+0

's = s +" 0 "'は 's + =" 0 "'と似ています。 –

答えて

1

なぜだけではなく...

def trav(root, s=""): 

、その後、あなたのs = ""行を省略し、trav(a)としてそれを呼び出すことができますか?あなただけの事か2をインライン化して喜んでいた場合にも、あなたはあまりスライシング行うことができます。これのどれもが、イテレータを行うには何も持っていないことを

from numbers import Number 

a = [[[1,2],[3,4]],[[5,6],[7,8]]] 


def trav(root, s=""): 
    if isinstance(root, Number): 
     print("%s -> %s" % (root, s)) 
    else: 
     trav(root[0], s + "0") 
     trav(root[1], s + "1") 

trav(a) 

注意を。あなたが何を考えているのか分かりません。 sは、アキュムレータ引数として機能します。おそらくそれはあなたが考えていた言葉ですか?

関連する問題