1. 程式人生 > >Python 列表淺拷貝與深拷貝

Python 列表淺拷貝與深拷貝

deep log es2017 .com com python 列表 imp http bsp

淺拷貝 shallow copy 和深拷貝 deep copy

list.copy() 淺拷貝:復制此列表(只復制一層,不會復制深層對象) 等同於 L[:]

舉例:

淺拷貝:

  a = [1.1, 2.2]   # a = [1.1, 2.2]
  b = [1, 2, a]   # b = [1, 2, [1.1, 2.2]]
  c = b.copy()  # c = [1, 2, [1.1, 2,2]]
  a[0] = 1.123
  b = [1, 2, [1.123, 2.2]]
  c = [1, 2, [1.123, 2.2]]

內存中的指向是這樣的,如下圖:

技術分享

深拷貝:
  註:使用deepcoyp前需要導入copy模塊。
  Import copy # 導入copy模塊
  a = [1.1, 2.2]   # a = [1.1, 2.2]
  b = [1, 2, a]   # b = [1, 2, [1.1, 2.2]]
  c = b.deepcopy()  # c = [1, 2, [1.1, 2,2]]
  a[0] = 1.123
  b = [1, 2, [1.123, 2.2]]
  c = [1, 2, [1.1, 2.2]]

內存中的指向是這樣的,如下圖:

技術分享

Python 列表淺拷貝與深拷貝