2012-10-14 32 views
0

我有一段代碼循環,直到出現錯誤或值爲None分配給變量「parent」。在每個循環中,它將一個值附加到一個名爲actionList的列表中。通過打印語句,我知道該列表通過循環的每次迭代都在增長。但是,在我退出循環(通過被捕獲的KeyError)之後,打印語句顯示列表現在被賦值爲None。任何想法發生了什麼?當我退出while循環時,爲什麼我的列表消失?

while parent is not None: 
       print "iterating" 
       print actionList 
       try: 
        pathList.append(parentMap[parent]) 
       except KeyError: 
        break 
       actionList.append(actionMap[parent]) 
       parent = parentMap.get(parent, None) 
      return actionList.reverse() 

經進一步檢查,它看起來像的ActionList仍然完好無損,一旦我離開循環。但是,在actionList上使用reverse()方法時,它將消失。我使用reverse()是否錯誤?

+3

嗯......好的,首先,你的縮進是不合時宜的,而且你知道Python中的問題,那麼你可以修復它嗎?另外,「消失」是什麼意思? –

回答

6

是的。 reverse反轉列表並返回None。做到這一點,而不是:

actionList.reverse() 
return actionList 

你也可以做return list(reversed(actionList)),這將返回列表的反轉副本

+2

不完全。 'reversed()'返回一個'listreverseiterator對象'(或Python 3中的'list_reverseiterator對象),而不是一個列表。仍然,+1 –

+0

你是對的,解決了這個問題。 – BrenBarn

相關問題