2016-11-25 170 views
0
['P', ['Q', ['R', ['S', 'T'], ['U', 'V']]]] 

這是我的列表,我需要以特定的方式遍歷它。對於下面的輸出應該是: -Python:列表的迭代列表

P -> Q 
Q -> R 
R -> S U 
S -> T 
U -> V 

我嘗試以下的事情: -

def traverse_mystructure(tree): 
    queue = [tree] 

    for list in tree: 
     print list 
     traverse_mystructure(list); 

我不能夠得到這樣的輸出與above.Is能夠獲得這種的輸出?

+0

爲什麼你需要'隊列',這通常用於迭代解決方案與遞歸。 BTW:不要使用'list'作爲變量名 - 它隱藏python的'list'類型。廣度優先打印將更加簡單迭代(隊列)。 – AChampion

+0

您還需要在遞歸時處理基本情況。這裏的基本情況是當樹是一個空列表 –

+0

我假設,你的類隊友問同樣的問題[這裏](http://stackoverflow.com/questions/40791675/using-nltk-tree?noredirect=1#comment68807105_40791675)今天。 – schwobaseggl

回答

1

我已經完成了這個粗略的假設只是在你的問題給定的模式。

inputList = ['P', ['Q', ['R', ['S', 'T'], ['U', 'V']]]] 

print inputList 

def printSomeMore(newList): 
    output = "" 
    for sublist in newList: 
     if (len(sublist) == 1): 
      output = sublist + " ->" 
     else: 
      output = output + " " + sublist[0] 
    return output 

def printMyList(myList): 
    for each in myList: 
     if str(myList[0]) == str(each): 
      if (len(myList) == 2): 
       print each, "->", myList[-1][0] 
      if (len(myList) > 2): 
       value = printSomeMore(myList) 
       print value 
     if str(type(each)) == "<type 'list'>": 
      printMyList(each) 

printMyList(inputList) 

我從中得到的輸出。

['P', ['Q', ['R', ['S', 'T'], ['U', 'V']]]] 
P -> Q 
Q -> R 
R -> S U 
S -> T 
U -> V 
+0

非常感謝! –

+0

@ user3168473如果它回答您的問題,您是否可以將此標記爲接受的答案。 –