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

Python函数中如何修改list2而不改变list1?

如何在Python函数中修改list2的同时不改变list1?

问题出在你代码里的ls1 = ls——这只是把原列表的引用赋值给了ls1,两者指向内存中同一个列表对象,所以修改ls1时,原列表list1必然会跟着变化。

要实现修改副本不影响原列表,你需要先创建原列表的独立副本,再修改副本。以下是几种常用方法:

方法1:用切片创建副本

def change_list(ls):
    ls1 = ls[:]  # 通过切片生成原列表的完整副本
    ls1[1] = "?"
    return ls1

list1 = ['a', 'b', 'c', 'd']
list2 = change_list(list1)

print(f"List 1 - {list1}")
print(f"List 2 - {list2}")

方法2:用list()构造函数创建副本

def change_list(ls):
    ls1 = list(ls)  # 利用list()构造新的列表副本
    ls1[1] = "?"
    return ls1

list1 = ['a', 'b', 'c', 'd']
list2 = change_list(list1)

print(f"List 1 - {list1}")
print(f"List 2 - {list2}")

方法3:用copy模块的浅拷贝(适合嵌套列表场景)

如果你的列表包含嵌套的可变对象(比如列表里套列表),可以用copy.copy()做浅拷贝(深度拷贝用copy.deepcopy()):

import copy

def change_list(ls):
    ls1 = copy.copy(ls)  # 生成原列表的浅拷贝
    ls1[1] = "?"
    return ls1

list1 = ['a', 'b', 'c', 'd']
list2 = change_list(list1)

print(f"List 1 - {list1}")
print(f"List 2 - {list2}")

以上代码运行后都会得到预期结果:

List 1 - ['a', 'b', 'c', 'd']
List 2 - ['a', '?', 'c', 'd']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:15:21