python 深拷貝&淺拷貝

  • 可以理解爲:淺拷貝就是對引用的拷貝,所謂深拷貝就是對對象的資源的拷貝。(類似java)

  • 賦值操作的理解:

    • 賦值是將一個對象的地址賦值給一個變量,讓變量指向該地址
    • 修改不可變對象(str、tuple)需要開闢新的空間
    • 修改可變對象(list等)不需要開闢新的空間
  • b = a 與 b=a[:]的區別
    • b=a 表示b引用a,則意味着b指向a的地址
    • b=a[:] a[:]創建了一個a的副本,是一個深拷貝,則意味着b引用a的副本,b與a中元素的地址不同,只是值相同
      這裏寫圖片描述
  • 例子:

    a=[1,2,3]
    b=a
    b[:]=[x+1 for x in a]
    print a, b
    輸出:[2, 3, 4] [2, 3, 4]
    b = [x-1 for x in a]
    print a,b
    輸出:[2, 3, 4] [1, 2, 3]
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章