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

2024-09-29 21:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python实现Dijkstra的算法,我想知道如何从列表中删除一个对象的实例? 以下是我的代码中出现错误的部分:“列表.删除(x) “不在列表中”。在

class Vertex:
    def __init__(self, id, name):
        self.id = id
        self.name = name
        self.minDistance = float("inf")
        self.previousVertex = None
        self.edges = []

    def computePath(self, sourceId):
        for i in self.vertexes:
            if i.id == sourceId:
                startVertex = i
                startVertex.minDistance=0
                break
            else:
                continue
        unvisited = []
        for vertex in self.vertexes:
            unvisited.append(vertex)
        while len(unvisited)!=0:
            self.visited.append(startVertex)
            unvisited.remove(startVertex)

Tags: nameinselfid列表fordefvertex
1条回答
网友
1楼 · 发布于 2024-09-29 21:25:33

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')

接下来的诀窍是使==等式测试通过。这是用^{} method完成的。默认的实现是只在两个项目是同一个对象时返回True,因此item is item_to_remove为真。在

您可以为您的Vertex类创建自定义方法:

^{pr2}$

您需要决定两个Vertex实例何时相等。在

相关问题 更多 >

    热门问题