zoukankan      html  css  js  c++  java
  • python基础三(深浅拷贝)

    1.赋值操作

    1 list_1 = [1,2,3,['barry','Jerry']]
    2 list_2 = list_1
    3 list_1[0] = 111
    4 print(list_1) #  [111, 2, 3, ['barry', 'Jerry']]
    5 print(list_2) #  [111, 2, 3, ['barry', 'Jerry']]

    对于赋值运算操作。list[1]与list[2]指向的是同一个内存地址。所以完全一样

    2.浅拷贝

    1 # -------------浅拷贝----------------
    2 # 对于浅拷贝而言。第一层的创建时新的内存地址。而从第二层开始指向的都是同一块内存地址
    3 list_1 = [1,2,3,['barry','Jerry']]
    4 list_2 = list_1.copy()
    5 list_1[0] = 111
    6 print(id(list_1[3])) # 40904072 同一块内存地址
    7 print(id(list_2[3])) # 40904072 同上
    8 print(list_1) # [111, 2, 3, ['barry', 'Jerry']]
    9 print(list_2) #  [1, 2, 3, ['barry', 'Jerry']]

    对于浅拷贝而言。第一层创建时产生新的内存地址。而从第二层开始指向的都是同一块内存地址

    3.深拷贝

    1 # -------------深拷贝----------------
    2 import copy
    3 list_1 = [1,2,3,['barry','Jerry']]
    4 list_2 = copy.deepcopy(list_1)
    5 list_1[3][0]=['Jack']
    6 print(list_1) # [1, 2, 3, [['Jack'], 'Jerry']]
    7 print(list_2) # [1, 2, 3, ['barry', 'Jerry']]

    对于深拷贝而已。创建两个不同的内存地址。只是将list1 中的元素完整的拷贝一份给list2

  • 相关阅读:
    关于tomcat内存检查的错误
    linux fedora19默认没有最大化和最小化按钮解决
    顺序栈
    在NET平台下,操作EXCEL
    【Android】状态栏通知Notification、NotificationManager详解
    Android之BroadcastReceiver
    Android之Broadcast
    Android 之Service
    我的常用网站收集
    arduino
  • 原文地址:https://www.cnblogs.com/shine-rainbow/p/9775400.html
Copyright © 2011-2022 走看看