所以我有类似的东西:
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/