0

私はまだオブジェクトを扱うことを学んでいます。Graph で頂点 (vs として初期化) を返すメソッドとして vertices() を定義しました。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

リスト内包表記で1行にすることができます。

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

Graph で頂点 (vs として初期化) を返すメソッドとして vertices() を定義しました。

dictのキーが含まれているように、これがあなたが望むものだと思いvsます。__init__

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

その場合、verticesメソッドはまったく必要ありません-常に使用してくださいGraph.keys()

于 2012-05-17T04:34:27.000 に答える