【问题标题】:python lists copying is it deep copy or Shallow copy and how is it done?python列出复制是深拷贝还是浅拷贝,它是如何完成的?
【发布时间】:2012-12-11 06:40:44
【问题描述】:

如何在 python 中为列表完成深度复制?

我对复制列表有点困惑。是使用浅拷贝还是深拷贝? 另外,子列表的语法是什么?是g=a[:]吗?

【问题讨论】:

    标签: python list shallow-copy deep-copy


    【解决方案1】:

    Python Doc你必须使用copy.deepcopy(x)

    【讨论】:

      【解决方案2】:

      新列表是引用的副本。 g[0]a[0] 都引用同一个对象。因此这是一个浅拷贝。可以看到copy模块的deepcopy递归复制容器的方法,不过这在我的经验中不是很常见的操作。

      在风格上,我更喜欢更明确的 g = list(a) 来创建列表的副本,但创建完整的切片具有相同的效果。

      【讨论】:

      • 你能看看我的回答,确认文档中的说法是对还是错吗?
      • @PeterShinners .. 这就是我感到困惑的地方。我不明白为什么,但是当我尝试使用 a = [1, 2, 3] 时,copy.copycopy.deepcopy 的行为方式相同
      • [1, 2, 3] 这样的序列只是一个容器。浅拷贝和深拷贝之间的区别仅在容器嵌套时才重要。如果您尝试像这样的嵌套容器,它可能会有所帮助,[1, 2, ["a", "b", "c"]]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多