所以我有类似的东西:
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时,列表只包含最后一次迭代的值......我做错了什么?我没有看到它
答案 0 :(得分: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
答案 1 :(得分:0)
假设您的point
是一个列表,则需要append(point[:])
附加point
的副本,而不是列表的引用。
如果point
是其他一些迭代或用户定义,您可能需要模块copy
来进行浅或深拷贝。