zoukankan      html  css  js  c++  java
  • Python的深浅拷贝

    Python的深浅拷贝

     

    深浅拷贝
    1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容

    1 list1 = ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']]
    2 list2 = list1
    3 print("list1的内容为:",list1,"list1的内存地址为:",id(list1))
    4 list2的内容为: ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']] list1的内存地址为: 2006224427976
    5 print("list2的内容为:",list2,"list1的内存地址为:",id(list2))
    6 list2的内容为: ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']] lis2的内存地址为: 2006224427976

    所以lst1的内存指向和lst2是⼀样的list1改变了list2也发生了改变

    1 list1 = ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']]
    2 list2 = list1
    3 list1.append("我是YJ呀")   #在list1中最后追加内容
    4 print("list1",list1)
    5 list1 ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19'], '我是YJ呀']
    6 print("list2",list2)
    7 list2 ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19'], '我是YJ呀']

    2. 浅拷贝,只拷贝第一层内容 [:]   copy()

    1 list1 = ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']]
    2 list2 = list1[:]  #利用切片拷贝,索引从头到尾不填代表全部,浅拷贝
    3 list3 = list1.copy()  #利用copy函数拷贝,浅拷贝
    4 print('list1的内容为:',list1,'list1的内存地址为:',id(list1))
    5 list1的内容为: ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']] list1的内存地址为: 2201519417800
    6 print('list2的内容为:',list2,'list2的内存地址为:',id(list2))
    7 list2的内容为: ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']] list2的内存地址为: 2201519417672
    8 print('list3的内容为:',list3,'list3的内存地址为:',id(list3))
    9 list3的内容为: ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']] list3的内存地址为: 2201519417928

    3. 深拷贝,把这个对象内部的内容全部拷贝一份,引入copy模块,deepcopy()

    1 import copy  #导入copy模块
    2 list1 = ['python','PHP','java','C',['name','YJ','age','19']]  #定义一个列表
    3 list2 = copy.deepcopy(lst1)  #把list1深拷贝一份赋值给list2
    4 print(list2)  #输出
    5 ['python', 'PHP', 'java', 'C', ['name', 'YJ', 'age', '19']]

      2019年11月5日

  • 相关阅读:
    泛型的二阶构造
    二叉树的优势
    浅谈AVL树,红黑树,B树,B+树原理及应用
    AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
    据库索引及其数据结构
    关系型数据库工作原理-数据结构(3)
    数据库的最简单实现
    为什么使用数据库?数据库的存取效率如何保证?
    iOS原生数据存储策略
    数据存储要解决的几个问题
  • 原文地址:https://www.cnblogs.com/yjtxin/p/11795853.html
Copyright © 2011-2022 走看看