如何在python中从列表中删除对象的实例?
我正在用python实现Dijkstra的算法,我想知道如何从列表中删除对象的实例? 下面是我的代码的一部分,其中我得到一个错误:“list.remove(x):x不在列表中”如何在python中从列表中删除对象的实例?,python,Python,我正在用python实现Dijkstra的算法,我想知道如何从列表中删除对象的实例? 下面是我的代码的一部分,其中我得到一个错误:“list.remove(x):x不在列表中” list.remove()将从列表中删除第一项,其中该项等于要删除的内容 换句话说,算法就是这样做的: def remove(self, item_to_remove): for index, item in enumerate(self): if item == item_to_remove:
list.remove()
将从列表中删除第一项,其中该项等于要删除的内容
换句话说,算法就是这样做的:
def remove(self, item_to_remove):
for index, item in enumerate(self):
if item == item_to_remove:
del self[index]
return
raise ValueError('list.remove(x): x not in list')
然后,诀窍是使=
相等性测试通过。这是通过以下步骤完成的。默认实现是,当两个项是一个相同的对象时,仅返回True
,因此item is item_to_remove
为True
您可以为顶点
类创建自定义方法:
def __eq__(self, other):
if not isinstance(other, Vertex):
return NotImplemented
return self.id == other.id # refine as needed
您需要确定两个
顶点
实例何时相等。您不断尝试在循环中一次又一次地删除startVertex
。另外pop()
也是一个很好的函数,它可以在适当的位置从列表中删除内容。@mooningrawr也是这样做的。删除@user2357112我阻止它在代码的后面这样做,我只是不想发布整个代码,因为它太长了
def __eq__(self, other):
if not isinstance(other, Vertex):
return NotImplemented
return self.id == other.id # refine as needed