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

Python嵌套列表追加元素结果不符合预期的问题求解

问题成因
  • Python中序列使用*做乘法操作时,仅会重复序列内元素的引用,不会创建新的独立对象。([],)*3生成的元组中,3个空列表指向同一块内存地址,是同一个列表实例,你将其转换为列表赋值给x后,x的3个元素仍然共享这一个列表实例。
  • 后续对x[0]、x[1]、x[2]执行append操作,本质都是修改同一个列表,所以最终三个位置的输出完全一致。你可以通过print(x[0] is x[1])验证,运行结果为True,足以证明两者是同一个对象。
解决方法

无显式循环写法

最常用的简洁实现是列表推导式,属于Python语法内置的循环实现,不会出现显式的循环代码:

x = [[] for _ in range(3)]
x[0].append(1)
x[1].append(2)
x[2].append(3)
print(x)

运行后输出符合预期:

[[1], [2], [3]]

如果完全不想使用任何循环相关语法,也可以通过map实现:

x = list(map(lambda _: [], range(3)))

显式循环写法

如果接受显式循环,也可以逐个初始化列表元素:

x = []
for _ in range(3):
    x.append([])

内容的提问来源于stack exchange,提问作者Owen Sam。

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:27:04