我試圖調用此功能(僅第一線事項):表被視爲一個元組
def find_path(graph, start, end, path=[]):
path = path + [start]
if start == end:
return path
if not graph.has_key(start):
return None
for node in graph[start]:
if node not in path:
newpath = find_path(graph, node, end, path)
if newpath: return newpath
return None
這樣的:
find_path(self.neighbors, (4,4), (0,4))
,但我總是得到這個錯誤:
path = path + [start]
TypeError: can only concatenate tuple (not "list") to tuple
我知道,我不能改變一個元組,但我認爲path
是一個列表,當我檢查它是鍵入它說的元組,怎麼回事?你有什麼建議來解決它?謝謝
是'find_path'函數或方法?你用'self.neighbors'作爲第一個參數來調用它,所以你是否缺少'def find_path(self,...)'? –
對於使用可變默認參數也非常謹慎。這應該在這種情況下工作,但它是容易搞砸的那些「陷阱」之一(例如,如果你的第一行是'path.append(start)'!) –
感謝@AdamSmith,那真的是問題,我感覺很尷尬,我沒有注意到 –