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

Python乘号创建的嵌套列表修改指定索引时所有子列表同步变更原因求解

问题原因说明

核心问题出在嵌套列表的初始化方式上,Python的*运算符对可变对象的复制逻辑是复制引用而非创建新对象:

  • 执行scores = [[0,0]]*10时,仅会生成1个[0, 0]子列表实例,*10操作只是把这个实例的内存引用重复了10次存入外层列表,scores中所有位置的子列表本质上是同一个对象。
  • 执行scores[1][1] += 1时,修改的是这个公共子列表实例的值,所有指向该实例的引用访问到的内容自然同步更新,就出现了修改一处全部生效的现象。
正确初始化方案

如果要生成互不影响的独立子列表,使用列表推导式初始化即可,每次迭代都会创建新的子列表实例:

scores = [[0, 0] for _ in range(10)]
scores[1][1] += 1
print(scores)
# 输出:[[0, 0], [0, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:04