如何在python中从列表中删除对象的实例?

如何在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:

我正在用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:
            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