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

Python使用*乘法初始化嵌套列表出现元素异常重复问题求助

根因分析

你遇到的是Python列表*操作符的浅拷贝特性导致的问题:

  • 你使用的[[".",] * 10 ] * NumberOfHosts写法中,外层的* NumberOfHosts只会复制内层列表的引用,并不会创建新的独立内层列表,最终TenLast里所有的子列表都指向同一个内存地址。
  • 当你在循环中修改任意一个子列表的元素时,本质都是修改同一个列表对象,因此最后所有子列表的首个元素都会被覆盖为最后一次循环赋值的6。
解决方案

使用列表推导式初始化列表,每次循环主动创建新的独立子列表即可:

# 替换原初始化代码即可
TenLast = [["."] * 10 for _ in range(NumberOfHosts)]

修改后所有子列表都是独立的对象,修改操作不会互相影响,运行后就能得到你预期的输出结果。

验证方法

可以通过id()函数校验对象内存地址确认问题:

  • 原初始化方案下id(TenLast[0]) == id(TenLast[1])返回True,说明是同一个对象
  • 列表推导式初始化方案下id(TenLast[0]) == id(TenLast[1])返回False,说明是独立对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:00:05