所以我有类似的东西:

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 时,列表只包含最后一次迭代的值......我做错了什么?我没看到

最佳答案

当您 append 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

关于python - 列表 append 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23661961/

10-12 02:06