所以我有类似的东西:
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 - 列表追加不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661961/