如何在python中初始化二维数组

时间:2014-05-19 13:12:28

标签: python

我想在python中实现图形的邻接列表表示(出于教育目的,我不是要重新发明轮子:-))

每个顶点指向一个边数组。我希望它们被初始化,以便我可以立即执行append

所以我写道:

self.vertices = [[]] * size

但这不起作用,因为我得到了相同的列表对象重复,所以当我写

self.vertices[v1].append(edge_index)

此数字附加到所有(或唯一)数组

如何以优雅的方式执行列表初始化?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

self.vertices = [[] for _ in range(size)]

实施例

size = 5

a = [[] for _ in range(size)]
a[2].append(5)

>>> print a
[[], [], [5], [], []]

答案 1 :(得分:2)

class adj_matrix:
    def add_data(self):
        self.size = 10
        self.vertices = [[] for i in range(self.size)]
        # append a single value
        self.vertices[1].append(5)
        # append a dict
        self.vertices[2].append({'a':2})
        # append a list
        self.vertices[3].append([1,2,3])

        self.vertices[4].append((1,2));
        print self.vertices

mat = adj_matrix()
mat.add_data()

根据您的需要添加数据。

<强>输出

[[], [5], [{'a': 2}], [[1, 2, 3]], [(1, 2)], [], [], [], [], []]