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

Python中复制列表后排序,原列表却被修改的问题

为什么原列表会跟着被修改?

这是因为Python里的列表属于可变对象,你写的copy = p根本不是复制列表,只是给同一个列表对象多起了个名字——copy和p指向的是内存里同一个列表,就像两个遥控器控制同一台电视。

看你的代码流程:

  1. 执行p = [7,1,5,3,6,4],内存中生成一个列表对象,p是指向它的"指针"。
  2. 执行copy = p,只是让copy也指向这个列表,并没有生成新的列表。
  3. 调用copy.sort(reverse=True)时,本质是对这个共享的列表对象做排序操作,所以p和copy都会显示排序后的结果。
怎么正确复制列表?

你用的p.copy()是正确的方式之一,它会创建一个全新的列表对象,把原列表的元素复制进去,此时copy和p各指各的列表,操作其中一个不会影响另一个。

另外还有两种常用的复制方式:

  • 切片操作:copy = p[:],切片默认取整个列表,会返回新列表。
  • 如果列表里嵌套了其他可变对象(比如列表里套列表),要用深拷贝:
    import copy
    copy = copy.deepcopy(p)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:03:07