【问题标题】:List append not working列表附加不起作用
【发布时间】:2014-07-02 22:33:29
【问题描述】:

所以我有类似的东西:

listPoints=[]
for x in range(100):
    for y in range(10):
        point[0]=x
        point[1]=y
        point[2] = num_cluster
        listPoints.append(point)
print listPoints

当我打印 listPoints 时,列表只包含最后一次迭代的值..我做错了什么?没看到

【问题讨论】:

  • 您每次都添加相同的点参考,并更改其内容。创建新点 =[] 数组。

标签: python list append


【解决方案1】:

假设您的point 是一个列表,您需要append(point[:]) 附加point 的副本而不是列表的引用。

如果point 是其他一些可迭代或用户定义的,您可能需要模块copy 来进行浅拷贝或深拷贝。

【讨论】:

    【解决方案2】:

    当您追加point 时,您并没有添加point 数组的副本——您添加的是对它的引用。因此,当您执行listPoints.append(point) 时,您实际上每次都在为完全相同的事物添加完全相同的引用。因此,当您更改point 时,似乎listPoints 中的每个元素都发生了变化。

    您可以通过创建列表来解决问题:

    listPoints=[]
    for x in range(100):
        for y in range(10):
            point = [x, y, num_cluster]
            listPoints.append(point)
    print listPoints
    

    ...或复制它,如果你绝对必须:

    import copy
    
    listPoints=[]
    for x in range(100):
        for y in range(10):
            new_point = copy.deepcopy(point)
            new_point[0]=x
            new_point[1]=y
            new_point[2] = num_cluster
            listPoints.append(new_point)
    print listPoints
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 2014-02-06
      • 2013-09-29
      • 2017-02-25
      相关资源
      最近更新 更多