VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝(4)

⻘翼蝠王', '杨逍']
  • ['⾦⽑狮王', '紫衫⻰王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']
  • dic1 = {"id": 123, "name": "谢逊"}
  • dic2 = dic1
  • print(dic1)
  • print(dic2)
  • dic1['name'] = "范瑶"
  • print(dic1)
  • print(dic2)
  • 结果:
  • {'id': 123, 'name': '谢逊'}
  • {'id': 123, 'name': '谢逊'}
  • {'id': 123, 'name': '范瑶'}
  • {'id': 123, 'name': '范瑶'}
  • 对于list,set,dict来说,直接赋值,其实是把内存地址交给变量,并不是复制⼀份内容。所以,
    lst1的内存指向和lst2是⼀样的,lst1改变了,lst2也发⽣了改变。
    浅拷⻉:
    
    		
    1. lst1 = ["何炅", "杜海涛","周渝⺠"]
    2. lst2 = lst1.copy()
    3. lst1.append("李嘉诚")
    4. print(lst1)
    5. print(lst2)
    6. print(id(lst1), id(lst2))
    7. 结果:
    8. 两个lst完全不⼀样. 内存地址和内容也不⼀样. 发现实现了内存的拷⻉
    9. lst1 = ["何炅", "杜海涛","周渝⺠", ["麻花藤", "⻢芸", "周笔畅"]]
    10. lst2 = lst1.copy()
    11. lst1[3].append("⽆敌是多磨寂寞")
    12. print(lst1)
    13. print(lst2)
    14. print(id(lst1[3]), id(lst2[3]))
    15. 结果:
    16. ['何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅', '⽆敌是多磨寂寞']]
    17. ['何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅', '⽆敌是多磨寂寞']]
    18. 4417248328 4417248328
    浅拷⻉. 只会拷⻉第⼀层. 第⼆层的内容不会拷⻉. 所以被称为浅拷⻉。
    深拷⻉:
    
    				
    1. import copy
    2. lst1 = ["何炅", "杜海涛","周渝⺠", ["麻花藤", "⻢芸", "周笔畅"]]
    3. lst2 = copy.deepcopy(lst1)
    4. lst1[3].append("⽆敌是多磨寂寞")
    5. print(lst1)
    6. print(lst2)
    7. print(id(lst1[3]), id(lst2[3]))
    8. 结果:
    
    相关教程