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

Python嵌套列表调用.copy()后不同实例变量仍关联的问题求解

问题诱因

你遇到的是Python嵌套列表的浅拷贝特性导致的资源意外修改问题,具体逻辑如下:

  • 列表自带的.copy()方法、[:]切片操作、copy.copy()都属于浅拷贝,对于嵌套列表而言,仅会复制最外层的列表容器,内部嵌套的所有子列表仍和原列表的子列表指向同一块内存地址。
  • 执行currentlocation = lobby_art.copy()后,你修改currentlocation[userlocationY][1]的操作,本质上是在修改两个列表共享的子列表内容,因此硬编码的lobby_art里的礼物资源会被同步移除。
  • 你之前调用copy模块未解决问题,是因为没有使用递归复制所有层级对象的深拷贝接口copy.deepcopy()。
修复方案

方案1:使用深拷贝接口

导入copy模块,替换原有的拷贝逻辑即可实现两个列表的完全隔离:

import copy
# 替换原来的 currentlocation = lobby_art.copy()
currentlocation = copy.deepcopy(lobby_art)

方案2:手动复制子列表(无额外依赖)

通过列表推导式逐行复制子列表,也可以实现嵌套列表的完全隔离:

# 替换原来的 currentlocation = lobby_art.copy()
currentlocation = [row.copy() for row in lobby_art]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:03