python - Class 方法 returns 无

我对 Bellman-Ford 进行了一些修改以获得一些我需要比较的数据,但我似乎无法从 return PrintArr 方法中获得一些我需要的信息,而它打印了“dist_list” ' return 不会接受它,我也无法使用列表理解创建对象。

Class Graph:

def __init__(self, vertices):
    self.V = vertices
    self.graph = []

def addEdge(self, u, v, w):
    self.graph.append([u, v, w])
     
def printArr(self, dist, src):
    #print("Source  End     Distance")
    dist_list = []
    for i in range(self.V):
        #print("{0}\t{1}\t{2}".format(src, i, dist[i]))
        #print(src, i, dist[i])
        dist_list.append([src, i, dist[i]])
    print(dist_list)
    print(dist_list == [[src, i, dist[i]] for i in range(self.V)])
    return [[src, i, dist[i]] for i in range(self.V)]

 
def BellmanFord(self, src):

    dist = [float("Inf")] * self.V
    dist[src] = 0

    for _ in range(self.V - 1):
        for u, v, w in self.graph:
            if dist[u] != float("Inf") and dist[u] + w < dist[v]:
                    dist[v] = dist[u] + w

    for u, v, w in self.graph:
        if dist[u] != float("Inf") and dist[u] + w < dist[v]:
            print("Graph contains negative weight cycle")
            return
                     
    self.printArr(dist, src)


matrix = [[0, 2, 2, 2, -1], [9, 0, 2, 2, -1], [9, 3, 0, 2, -1], [9, 3, 2, 0, -1], [9, 3, 2, 2, 0]]

g = Graph(len(matrix))


[[g.addEdge(i, j, element) for j, element in enumerate(array) if i != j] for i, array in enumerate(matrix)]

print(g.BellmanFord(0))

输出:

[[0, 0, 0], [0, 1, 2], [0, 2, 1], [0, 3, 1], [0, 4, -1]]

真的

没有任何

打印:好的

清单 A = 清单 B

为什么 return 没有???我错过了什么?

回答1

None 来自:

print(g.BellmanFord(0))

BellmanFord 在任何情况下都不会 returns 任何有用的东西(它要么落下并隐含 returns None,要么执行一个普通的 return,它也是 return None)。删除调用周围的 print(),您将避免 None 输出。

或者,将 self.printArr(dist, src) 更改为 return self.printArr(dist, src),以便它执行 return 一些有用的操作(假设早期的 return,它可能应该引发异常而不是静默返回 None,没有被调用)。

相似文章

ms-word - Word Table 到 CSV 文件宏

我是Macros的新手,边走边学。我的目标是使用CSV格式使用来自Wordtable的数据填充文件。table跨越300多页,每页没有确切的行数。已创建在开始时选择文件的用户提示。明智的推荐流程是什么...

c# - 将多个客户端方法抽象为单个或更小的方法

我正在尝试将多个客户端方法抽象为单个方法或尽可能少的方法。这是因为我的客户端页面有将近350行代码。任何帮助,将不胜感激。下面是我的整个客户页面,以及到目前为止我想出的将它们全部抽象出来的内容。pub...

最新文章