值未传递

2024-06-23 19:48:27 发布

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

对于我下面的类函数

    def add_vertex(self,vertex):   
        for i in range(self.num_vertices):
            if self.vertices[i] == vertex:
                return

        self.vertices[self.num_vertices]=vertex
        for i in range(self.num_vertices):
            self.edges[self.num_vertices][i]=0
            self.edges[i][self.num_vertices]=0
        self.num_vertices +=1


    def add_edges(self,from_vertex,to_vertex,weight):
        row=self.index_is(from_vertex)
        col=self.index_is(to_vertex)
        self.edges[row][col]=weight

当我把这些值

i=0
while i<len(to):
    my_graph.add_vertex(from_[i])
    my_graph.add_edges(from_[i],to[i],distance[i])
    i=i+1

但价值并没有转移 from[]、to[]和distance[]的值

['Luebeck', 'Hamburg', 'Hamburg', 'Hamburg', 'Bremen', 'Bremen', 'Hannover', 'Hannover', 'Magdeburg', 'Berlin', 'Dresden', 'Leipzig', 'Dortmund', 'Kassel', 'Frankfurt', 'Frankfurt', 'Leipzig', 'Dortmund', 'Saarbruecken', 'Saarbruecken', 'Karlsruhe', 'Stuttgart', 'Stuttgart', 'Stuttgart', 'Nuremberg', 'Manchester', 'Birmingham', 'Birmingham']

['Hamburg', 'Bremen', 'Hannover', 'Berlin', 'Hannover', 'Dortmund', 'Magdeburg', 'Kassel', 'Berlin', 'Dresden', 'Leipzig', 'Magdeburg', 'Duesseldorf', 'Frankfurt', 'Dortmund', 'Nuremberg', 'Nuremberg', 'Saarbruecken', 'Frankfurt', 'Karlsruhe', 'Stuttgart', 'Frankfurt', 'Munich', 'Nuremberg', 'Munich', 'Birmingham', 'Bristol', 'London']

['63', '116', '153', '291', '132', '234', '148', '165', '166', '204', '119', '125', '69', '185', '221', '222', '263', '350', '177', '143', '71', '200', '215', '207', '171', '84', '85', '117']

Tags: tofromselfaddnumvertexverticesedges
1条回答
网友
1楼 · 发布于 2024-06-23 19:48:27

在其他问题中(提示:查看enumerate的工作原理), 您的代码不会像编写的那样工作,因为您只添加了from顶点,因此当需要在to中查找内容时,您会遇到一个错误(此外,即使to中的内容也在from中,您也会遇到一个问题,即在添加顶点之前尝试添加边。保留大部分代码的最佳方法是将数据的馈送改为:

for i in xrange(len(from_):
    g.add_vertex(from_[i])
for i in xrange(len(to):
    g.add_vertex(to[i])

for i in xrange(min(len(_from),len(to),len(weight)))
    g.add_edges(_from[i],to[i],weight[i])

(最小值只是为了确保3个列表的长度相同)

相关问题 更多 >

    热门问题