2012-04-25 123 views
0

上給予我收到類型錯誤:「NoneType」對象不是可迭代使用時「和()」列表

TypeError: 'NoneType' object is not iterable 

,當我試圖找到一個列表的總和。

發生問題:

if(sum(self._candidates) + self._allCandidates[self._depth]._weight > 20): 
    self._left = Node(self._candidates, self._depth + 1, self._allCandidates) 
else: 
    self._left = Node(self._candidates.append(self._allCandidates[self._depth]), self._depth + 1, self._allCandidates) 

節點定義:

def __init__(self, candidates = [], depth = -1, allCandidates = []): 
     self._candidates = candidates 
     self._depth = depth 
     self._allCandidates = allCandidates 

感謝在這個問題上的任何幫助。

回答

5

這是錯誤的:

Node(self._candidates.append(self._allCandidates[self._depth]) 

返回值從.appendNone,因此錯誤。

+2

另外,你會因爲'candidate = []'默認參數而讓自己陷入嚴重的麻煩。這是在函數定義時評估的,因此該類的所有實例將共享相同的列表(除非傳入另一個列表)。建議複製清單:'self._candidates = candidates [:]' – kindall 2012-04-25 16:56:45

相關問題