【问题标题】:How to initialize a two dimensional array in python [duplicate]如何在python中初始化二维数组[重复]
【发布时间】:2014-05-19 13:12:28
【问题描述】:

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

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

所以我写了:

self.vertices = [[]] * size

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

self.vertices[v1].append(edge_index)

这个数字被附加到所有(或唯一的)数组

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

【问题讨论】:

    标签: python


    【解决方案1】:

    你可以这样做:

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

    示例

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

    【讨论】:

      【解决方案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)], [], [], [], [], []]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-10
        • 2012-04-14
        • 2018-12-09
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 2020-11-24
        相关资源
        最近更新 更多