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

Python中列表切片生成的对象是浅拷贝还是深拷贝?

切片操作的拷贝类型问题

示例代码

Lst1 = [1,2,3,4]
Lst2 = Lst1
Lst3 = Lst1[0:2]
Lst4 = Lst1[:]

已知情况:

  • Lst1与Lst2指向同一个列表(直接赋值属于引用传递,未创建新列表)
  • Lst3是Lst1的切片结果
  • Lst4也是Lst1的切片结果

问题解答

Lst3和Lst4都是通过浅拷贝得到的新列表。

切片操作(无论是指定范围的[0:2]还是全量的[:])会创建一个新的列表容器,但新列表中的元素只是原列表元素的引用。对于示例中仅包含不可变元素(整数)的一维列表,浅拷贝的表现和深拷贝类似——修改新列表的元素不会影响原列表。但如果原列表包含可变对象(比如子列表、字典等),就能体现出浅拷贝的本质:

original = [1, [2, 3]]
shallow_copy = original[:]
# 修改浅拷贝里的可变子对象
shallow_copy[1].append(4)
print(original)  # 输出 [1, [2, 3, 4]],原列表的子列表被同步修改

这是因为浅拷贝仅复制最外层的列表结构,内部的可变元素仍然和原列表共享引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:15:31