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

Python中执行result.append(sum(array))为何会同步修改array数组

核心原因

Python 中对列表这类可变对象赋值时,默认是绑定对象引用而非拷贝值,你代码里的array = result = signature写法,相当于把array和result两个变量都指向了内存里的同一个列表对象。因此你不管通过哪个变量调用append、del等修改方法,操作的都是同一个列表,自然会出现改result同时影响array的现象。

修复方案

如果需要两个独立的列表,初始化时要对原始的signature做值拷贝,常见的拷贝写法有两种:

  • 调用列表的copy()方法
  • 用全切片语法[:]生成新列表

按照你的需求(result存储最终结果,array做中间计算),修改初始化代码即可:

def some_function(signature, n):
    # 分开拷贝,两个变量指向不同的列表对象
    result = signature.copy()
    array = signature.copy()
    count = 1
    while count <= n:
        print(array)
        result.append(sum(array))
        print(array)
        array.append(sum(array))
        print(array)
        del array[0]
        count += 1
    return result

print(some_function([1, 1, 1], 10))

修改后调用result.append就只会修改result本身,不会再影响array的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:27:06