python - 列表追加不起作用

标签 python list append

所以我有类似的东西:

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/

相关文章:

Python:追加行后列表不正确

javascript - 如何 append 到使用 jquery 在 for 循环中动态创建的 div 名称?

C++ 在 lists<string> 和 list<std::pair<string, string>> 之间选择返回类型

list - 在 Lisp 中使用 AND

python - 在并发环境中追加到文件末尾

javascript - 在 Selenium Python 中禁用图像

python - 为什么将列表初始化为空而不是具有预定大小是 Pythonic 的?

python - 搁置真的很慢并且占用大量内存还是我做错了什么?

python - get_dumies 出现无法散列的类型 'list' 错误

python - 在列表中制作所有可能的列表组合