1. 程式人生 > 實用技巧 >詳解二進位制補碼

詳解二進位制補碼

深、淺拷貝總結


深拷貝

  • 拷貝可變資料型別,如列表容器:

    • a = [1, 2, [3, 4]]
    • b = copy.deepcopy(a)
  • a 與 b 所指的列表容器的空間地址不一致,即 id(a) != id(b)

  • a 與 b 列表容器中的可變資料型別的空間地址不一致

  • a 與 b 列表容器中的不可變資料型別的空間地址一致

注意:

  • a 列表容器中的某些元素髮生改變時,b 容器中的相應元素是否會發生相同的改變?

    答案是: a 容器中的任何元素髮生任何變化,與 b 容器毫無瓜葛,b 中元素不會發生變化 !

圖示


淺拷貝

  • 拷貝可變資料型別,如列表容器:

    • a = [1, 2, [3, 4]]
    • b = copy.copy(a)
  • a 與 b 所指的列表容器的空間地址不一致,即 id(a) != id(b)

  • a 與 b 列表容器中的所有元素的空間地址都是一致的!

注意:

  • a 列表容器中的某些元素髮生改變時,b 容器中的相應元素是否會發生相同的改變?

    答案是:

    1. 若 a 容器中的第一級元素髮生改變,b 容器中的相應的元素不會發生改變!
    2. 若 a 容器中的第二級乃至更深層級的元素髮生改變,b 容器中的相應元素也會發生相同的改變!

圖示


深淺拷貝不可變元素

import copy

a = 10
b = copy.copy(a)
b = copy.deepcopy(a)

當深淺拷貝不可變資料型別,如整型時,a 與 b 所指向的空間地址是一致的!

圖示