zoukankan      html  css  js  c++  java
  • Python的大小整数池跟深浅copy

    一、小整数池

    可变的数据类型:list dict set

    可变: 就是里面的数据类型变了,但是指向的内存地址没变。

    不可变的数据类型:str 数值类型 tuple

    不可变:如果改变了里面的值,相应的只想内存地址也会发生改变。所以说为不可变的数据类型

    小整数池:-5 - 256 在这个池子里面的数值都是提前创建好的


    二、intern 机制(大整数池,针对字符串存储)

    大整数池: 只存储包含标准字符(数字、字母、下划线)的字符串,包含特殊字符的字符串不会被
    添加到大整数池

    例子:
    a = "123"
    b = "123"
    a is b =True
    注释:这两个指向的内存地址是一样的

    c= "123#"
    d = "123#"
    c is d = False
    注释:这两个指向的内存地址是不一样的

    三‘ 深,浅拷贝

    # 浅拷贝
    list1 = [1, 2, 3]
    list2 = [1,2,list1]
    list3 = list2.copy()

    list1.append(4)
    print(list3)
    """
    浅拷贝只会拷贝最外层的,里面如果有嵌套的,嵌套的数据内存指向是不会变得
    例子:
    上面copy了list2,list3跟list2指向的内存地址发生了变化,但是里面嵌套
    的list1 内存地址并没有发生变化,所以修改了list1的值,list3也会发生变化
    """

    # 深拷贝

    例子:
    浅拷贝
    list1 = [1, 2, 3]
    list2 = [1, 2, list1]
    list3 = list2.copy()
    list4 = copy.deepcopy(list2)
    list1.append(5)
    print(list4)
    """
    深拷贝,拷贝过来的数据都会开辟新的内存空间,不会跟以前的占用一个内存空间

    """

    注意:深浅拷贝一般发生在列表嵌套列表时讨论

  • 相关阅读:
    「SDOI2009」Bill的挑战
    「HAOI2011」Problem c
    HDU3530【STL/单调队列/RMQ】
    HDU2874【倍增、ST】
    POJ2955【区间DP】
    SPOJ375 Query on a tree 【倍增,在线】
    训练[2]-DFS
    Fighting For 2017 Season Contest 1
    POJ2796/DP/单调栈
    New Year Tree 【DFS序+线段树区间查询修改+二进制保存状态】
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10947322.html
Copyright © 2011-2022 走看看