深淺拷貝一看就懂版


深淺拷貝通俗易懂版

  • 淺拷貝
# 淺拷貝
l1 = [1, 2, [3, 4]]

l2 = l1.copy()
l2[0] = 66  # 該變淺拷貝后列表中不可變類型的值 [66, 2, [3, 4]]
print(id(l2))  #1532404207560
print(id(l1))  #1532282360904  拷貝后id不一樣
l2[2][0] = 5  # 改變淺拷貝后列表中可變類型的值
# print(l2)   # [66, 2, [5, 4]]
print(id(l2[0]))  #140723557857568
print(id(l1[0]))  #140723557855488  改變淺拷貝后列表中不可變類型的值只會改變自己的值所以id不一樣
print(id(l2[2][0]))  #140723557855616
print(id(l1[2][0]))  #140723557855616   改變淺拷貝后列表中可變類型的值兩個值都會一起變所以id一樣

  • 深拷貝
# 2、深拷貝
l1 = [1, 2, [3, 4]]

import copy
l2 = copy.deepcopy(l1)
l2[0] = 66  # 該變深拷貝后列表中不可變類型的值 [66, 2, [3, 4]]
print(id(l2))  #1532404207560
print(id(l1))  #1532282360904  拷貝后id不一樣
l2[2][0] = 5  # 改變深拷貝后列表中可變類型的值
# print(l2)   # [66, 2, [5, 4]]
print(id(l2[0]))  #140723557857568
print(id(l1[0]))  #140723557855488  改變深拷貝后列表中不可變類型的值只會改變自己的值所以id不一樣
print(id(l2[2][0]))  #140723557855616
print(id(l1[2][0]))  #140723557855552   改變深拷貝后列表中可變類型的值仍然只會改變自己的值所以id不一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM