0

我仍在学习使用对象。我将 vertices() 定义为在 Graph 中返回顶点(初始化为 vs)的方法。我知道有一种更简洁、更优雅的方式来编写 vertices() 但究竟是如何逃避我的。

这也特别与 Think Complexity 中的练习 2.5 相关:http: //greenteapress.com/complexity/html/book003.html#toc12

class Graph(dict):
    def __init__(self, vs=[], es=[]):

        for v in vs:
            self.add_vertex(v)

    def add_vertex(self, v):
        """Add a vertex to the graph."""
        self[v] = {}

    def vertices(self):
        v = []
        for i in range(len(self)):
            v.append(i)
        return v
4

2 回答 2

1

我将 vertices() 定义为在 Graph 中返回顶点(初始化为 vs)的方法。

由于包含字典vs__init__键,我想这就是你想要的。

    def vertices(self):
        return self.keys()

如果是这样,您根本不需要vertices方法 - 只需始终使用Graph.keys()

于 2012-05-17T04:34:27.000 回答
1

您可以使用列表理解将其设为一行:

def vertices(self):
    return [i for i in range(len(self))]
于 2012-05-17T01:58:00.243 回答