列表深拷贝与浅拷贝

Rudy 2025-6-23 34 6/23

Python 的赋值、浅拷贝、引用机制

场景 A:赋值,直接对 lst.append(xxx)

lst1 = []

# 变量赋值
def func1():
    lst1.append("A")

func1()
print(f"赋值示例:\n lst1:{lst1}")

结论:全局 list 会改变。因为你是对这个 lst 对象内部进行操作(追加元素),而不是改变引用。

场景 B:浅拷贝,局部 copy = list,然后 copy.append(xxx)

lst2 = []

def func2():
    copy_lst = lst2.copy()
    copy_lst.append("B")
    return copy_lst

new_lst = func2()
print(new_lst)
print(lst2)

结论:全局 list 不会改变。

因为 copy_lst = lst2.copy() 复制一个新列表,不会影响原列表

场景C:深拷贝:嵌套列表场景

# 深拷贝,嵌套列表场景
lst3 = [[1, 2], [3, 4]]
def func3():
    copy_lst = copy.deepcopy(lst3)
    copy_lst[0].append(88)
    return copy_lst
new_lst = func3()
print(new_lst)

结论:深拷贝外层和内层都复制,不会修改原列表;而浅拷贝只复制外层列表,内存列表还是共用的

深拷贝后的列表: [[1, 2, 99], [3, 4]]
原列表: [[1, 2], [3, 4]]

 

 

- THE END -
最后修改:2026年5月30日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论