zoukankan      html  css  js  c++  java
  • Python-基础-day4

     深浅copy                         

    1、先看赋值运算

    h1 = [1,2,3,['aihuidi','hhhh']]
    h2 = h1
    h1[0] = 111
    print(h1)
    print(h2)
    #结果:
    # [111, 2, 3, ['aihuidi', 'hhhh']]
    # [111, 2, 3, ['aihuidi', 'hhhh']]
    h1[3][0] = 'file'
    print(h1)
    print(h2)
    #结果:
    # [111, 2, 3, ['file', 'hhhh']]
    # [111, 2, 3, ['file', 'hhhh']]

    ps:对与赋值运算来说,h1和h2指向的是同一个内存地址,所以它们是完全一样的。

    为什么要拷贝?

    1
    当进行修改时,想要保留原来的数据和修改后的数据

    数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)

    1
    2
    3
    在修改数据时:
        数字字符串:在内存中新建一份数据
             集合:修改内存中的同一份数据

    对于集合,如何保留其修改前和修改后的数据?

    1
    在内存中拷贝一份

    对于集合,如何拷贝其n层元素同时拷贝?

    1
    深拷贝

    2,浅拷贝copy。

    对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的。

    3,深拷贝deepcopy。

    对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

  • 相关阅读:
    串行与并行
    并发性和并行性
    循环移位操作
    关于指针
    各种编程语言的特点
    什么是面向过程,什么是面向对象?
    数组指针/指针数组的示例
    数组指针/指针数组
    操作系统判断
    springMVC---简介
  • 原文地址:https://www.cnblogs.com/aihuidi/p/10445062.html
Copyright © 2011-2022 走看看