我有一个类,我会一直忽略不重要的信息:
class BuildMap:
def __init__(self):
#Constructor
self.nodes = []
def indexmap(self):
for node in self.nodes:
print(int(node),":",nodes[node])
def delnode(self,num):
del self.nodes[num]
for edge in self.edges:
if num in self.edges[edge]:
self.edges[edge].remove(num)
del self.edges[num] #Deletes the list associated with the number
del nodes[int(num)] #Deleted the word associated with the node number
for dist in list(self.distance.keys()):
if num in dist:
del self.distance[dist]
课外活动:
def delnode():
print("Please specify the city you would like to remove: ")
GPSMap.indexmap()
num = input("City Number: ")
if int(num) >= len(nodes):
print("Sorry that number does not match")
delnode()
GPSMap.delnode(int(num))
我遇到的问题是,在删除了一个“节点”并执行了我为清理其他数据结构而编写的所有代码之后,我收到了
File "C:/Users/gibbo/PycharmProjects/main.py", line 52, in indexmap
print(int(node),":",nodes[node])
IndexError: list index out of range
我做了一些调试,注意到我的索引并没有随着列表的长度而停止,而是在节点被删除后经过,就好像索引没有被更新或我的for循环:
for node in self.nodes:
没有使用列表中的节点数作为索引
所以,修好它
节点是一个节点,而不是整数。因为你没有包括对象的定义,我们不知道当你把它转换成整数时会发生什么,但是我很肯定你不会喜欢这个结果的。当您使用它作为索引时,结果几乎肯定超出了列表的范围
要查看实际效果,请将打印语句分开:
总的来说,您应该认识到节点是列表中的节点,而不是它在列表中的位置。直接使用节点作为所需对象
相关问题 更多 >
编程相关推荐