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

Python操作复制列表时原始输入列表意外被修改问题求助

问题产生原因

Python中的列表属于可变对象,nc = cells的赋值操作仅会给内存中已存在的cells列表对象新增一个别名nc,两个变量指向完全相同的内存地址。后续你对nc执行的增删元素、修改内层子列表数值等所有操作,本质都是直接操作原始输入的cells列表,因此会出现原列表被意外修改的问题。

如果只做nc = cells.copy()这类浅拷贝也无法解决问题:浅拷贝仅能复制最外层列表,内层的每一行子列表还是和原列表共享引用,修改内层元素依然会影响原输入。

解决办法

使用Python标准库copy提供的深拷贝(deepcopy)方法,完全递归复制嵌套列表的所有层级,生成和原列表完全独立的新对象:

  1. 先导入copy模块
  2. 将原代码中nc = cells替换为nc = copy.deepcopy(cells)

修改后的核心代码示例:

import copy

def get_generation(cells, generations):
    # 深拷贝得到完全独立的新列表,后续操作不会影响原cells
    nc = copy.deepcopy(cells)
    rownum = len(nc)
    cellnum = len(nc[0])
    
    # 后续原有逻辑保持不变即可
    for gen in range(generations):
        tc = []
        shouldadd = []
        # 原代码的剩余迭代逻辑...

修改完成后所有对nc的操作都不会影响原始输入的cells列表,符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 06:15:04