You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将数组添加至列表时覆盖已有值的解决方法

正确向列表添加numpy数组的方法

你遇到的问题根源是:numpy数组是可变对象,你循环里一直复用同一个show_img数组,每次fill(x)只是修改这个数组的内容,而append到列表里的是数组的引用,不是独立的副本。所以列表里所有元素其实指向同一个内存地址的数组,循环结束后数组的值是最后一次填充的9,自然所有元素看起来都是9。

下面是两种解决方法:

方法1:每次循环创建新数组

把数组初始化的代码放到循环内部,每次迭代都生成一个新的数组对象:

import numpy as np

ims = []

for x in range(10):
    show_img = np.zeros([2,2,3], dtype=np.uint8)
    show_img.fill(x)
    ims.append(show_img)

# 验证前3个元素
for arr in ims[:3]:
    print(arr)

方法2:添加数组的副本

如果需要复用原数组对象,每次append时添加数组的副本(用copy()方法),这样列表里的每个元素都是独立的数组:

import numpy as np

ims = []
show_img = np.zeros([2,2,3], dtype=np.uint8)

for x in range(10):
    show_img.fill(x)
    ims.append(show_img.copy())  # 添加副本而非原数组引用

# 验证前3个元素
for arr in ims[:3]:
    print(arr)

这样修改后,列表ims里就会包含从0到9填充的所有数组,符合你的预期结果。

内容的提问来源于stack exchange,提问作者Widhold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:32:37