3
所以下面的Python代碼的獲取錯誤:類型錯誤:「NoneType」對象有沒有屬性「的GetItem」.pop()似乎被觸發Python中的類型錯誤,即使結果應該是一個列表
我不知道爲什麼列表'路徑1'沒有被識別爲列表,而是被識別爲NoneType。
我已經檢查了以前的Stack問題,使用Google搜索,所有這些,但我無法弄清楚它爲什麼會發生。 This來了close-ish(我認爲),但我不知道爲什麼我的狀態=路徑[-1]調用是出現這個錯誤。
有什麼想法?非常感激。
感謝
代碼:
import re
import string
gr = {
"A":["B","C","D"],
"B":["A","E"],
"C":["A","E"],
"D":["A","H","I","J"],
"E":["B","C","F","G","H"],
"F":["E"],
"G":["E","H"],
"H":["D","E","G","K"],
"I":["D","K","L"],
"J":["D","M"],
"K":["I","M","H"],
"L":["I"],
"M":["K","J"]
}
def graphSearch(graph, start, dest):
frontier = [[start]]
explored = []
options = []
if frontier == []: return "I hope you enjoyed riding aboard the failboat"
while len(frontier)>0:
path = frontier.pop()
state = path[-1]
if state == dest:
return path
else:
for a in graph[state]:
if a not in path:
newP = path.append(a)
frontier.append(newP)
return options
print graphSearch(gr, "A", "M")
謝謝了,我還沒有得到它的全部工作,但我切換「如果不在路徑中: newP = path.append(a) frontier.append(newP)」to「if a not in路徑: newP =路徑 newP.append(a) frontier.append(newP)「讓我通過typeerror障礙。欣賞它,歡呼! – BWStearns
僅供參考,'newP = path'不會生成副本,因此您正在修改原始列表以及新的列表。如果你想要一個副本,你可以執行'newP = list(path)'或者'newP = path [:]'。 – Amber