2014-10-11 37 views
0
tuple = ('e', (('f', ('a', 'b')), ('c', 'd'))) 

查找指數如何獲得位置:(二叉樹)在一個元組的Python

[('e', '0'), ('f', '100'), ('a', '1010'), ('b', '1011'), ('c', '110'), ('d', '111')] 

有沒有什麼辦法的indexOf?

arvore[0] # = e 
arvore[1][0][0] # = f 
arvore[1][0][1][0] # = a 
arvore[1][0][1][1] # = b 
arvore[1][1][0] # = c 
arvore[1][1][1] # = d 
+4

你有什麼嘗試嗎?向我們提供您所嘗試的代碼。 – 2014-10-11 13:51:00

回答

5

您需要遞歸遍歷元組(如樹):

def traverse(t, trail=''): 
    if isinstance(t, str): 
     yield t, trail 
     return 
    for i, subtree in enumerate(t): # left - 0, right - 1 
     # yield from traverse(subtree, trail + str(i)) in Python 3.3+ 
     for x in traverse(subtree, trail + str(i)): 
      yield x 

用法:

>>> t = ('e', (('f', ('a', 'b')), ('c', 'd'))) 
>>> list(traverse(t)) 
[('e', '0'), ('f', '100'), ('a', '1010'), ('b', '1011'), ('c', '110'), ('d', '111')] 

BTW,不要使用tuple作爲變量名。它陰影內置類型/功能tuple

相關問題