.pop()似乎在Python中触发TypeError,即使结果应该是一个列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了.pop()似乎在Python中触发TypeError,即使结果应该是一个列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1168字,纯文字阅读大概需要2分钟。
内容图文
![.pop()似乎在Python中触发TypeError,即使结果应该是一个列表](/upload/InfoBanner/zyjiaocheng/722/9d738ede9c2f46668fb5735792c92353.jpg)
所以下面的Python代码得到错误:TypeError:’NoneType’对象没有属性’getitem’
我无法弄清楚为什么列表’path1‘不会被识别为列表,而是被识别为NoneType.
我已经检查了之前的Stack问题,谷歌搜索了所有这些,但我无法弄清楚它为什么会发生. This接近了(我想)但是我不知道为什么我的state = path [-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)
append不会返回任何内容(它会修改原始列表),因此您最终会在列表中附加一堆None.
.pop()工作正常;这是失败的state = path [1],因为pop()弹出了你在上一次迭代中附加的None项之一.
内容总结
以上是互联网集市为您收集整理的.pop()似乎在Python中触发TypeError,即使结果应该是一个列表全部内容,希望文章能够帮你解决.pop()似乎在Python中触发TypeError,即使结果应该是一个列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。