zoukankan      html  css  js  c++  java
  • 小数据池 深浅copy 集合

    1. id is ==

      #id is(内存地址和判断内存地址是否相同)
      #id 相同,值不一定相同
      #值相同,id不一定相同
      
      # s1 = [1, 2, 3]
      # s2 = [1, 2, 3]
      # # print(id(s1))
      # # print(id(s2))
      # # s1 ='holting'
      # # s2 = 'holting'
      # print(s1 is s2)
      
      
    2. 代码块

      • 代码块:我们所有的代码都 需要依赖代码块执行。
      • 一个文件就是一个代码块。
      • 交互式命令下一行就是一个代码块。
    3. 两个机制:同一个代码块下,有一个机制。不同的代码块下,遵循另一个机制。

    4. 同一个代码块下的缓存机制。

      • 前提条件:统一代码块下内。
      • 机制内容:pass
      • 适用的对象: int bool str
      • 具体细则: 所有的数字,bool,几乎所有的字符串。
      • 优点:提升性能,节省内存。
    5. 不同代码块下的缓存机制:小数据池。

      • 前提条件:不同代码内。

      • 机制内容:pass

      • 适用对象:int bool str

      • 具体细则: -5 ~256数字,bool ,满足规则的字符串。

      • 优点: 提升性能,节省内存。

        # s1 = [1, 2, 3]
        # s2 = [1, 2, 3]
        # # print(id(s1))
        # # print(id(s2))
        # # s1 ='holting'
        # # s2 = 'holting'
        # print(s1 is s2)
        

        总结:

        1. 面试题考。
        2. 回答的时候一定要分清楚:同一个代码块下适用一个缓存机制。不同的代码块下适用另一个换粗机制(小数据池)
        3. 小数据池:数字的范围是-5 ~256
        4. 缓存机制的优点:提升性能,节省内存。

        集合 set(了解)

        • 容器类型的数据类型,它要求它里面的元素是不可变数据,但它本身是可变数据类型。
        • 集合是无序的

        集合的作用:

        列表去重。

        关系测试:并集,交集,差集、、、

        #集合的创建:
        # set1 = set({1,3,'ddd', 5,'holting'})
        # print(set1)
        
        #空集合:
        # print({},type({}))#空字典
        # set1 = set()
        # print(set1)
        
        set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
        #增add  update迭代着增加
        # set1.add('xxxx')
        # print(set1)
        #
        # set1.update('dadfaffa')
        # print(set1)
        
        #删 remove 按照元素删   pop 随机删除
        # set1.remove('武大')
        # print(set1)
        # set1.pop()
        # print(set1)
        
        # 变相改值
        #先删除,在增加
        # set.remove('太白金星')
        # set.add('男神')
        # print(set1)
        
        #关系测试
        #交集 &
        # set1 = {1, 2, 3, 4, 5}
        # set2 = {4, 5, 6, 7, 8}
        # print(set1 & set2)
        #
        # #并集:|
        # print(set1 | set2)
        # #差集 -
        # print(set1 - set2)
        # #反交集 …^
        # print(set1 ^ set2)
        #
        # #子集 <
        # set1 = {1,2,3}
        # set2 = {1,2,3,4,5,6}
        # print(set1 < set2)
        #
        # #超集 >
        # print(set2 > set1)
        # #列表去重
        # l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
        # set1 = set(l1)
        # l1 = list(set1)
        # print(l1)
        #用处: 数据之间的关系,列表去重。
        
    6. 深浅copy

      #赋值运算
      # l1 = [1,2,3, [22,33]]
      # l2 = l1
      # l1.append(666)
      # print(l1)
      # print(l2)
      
      #浅copy
      # l1 = [1, 2, 3, [22, 33]]
      # l2 = l1.copy()
      # l1.append(666)
      # print(l1,id(l1))
      # print(l2,id(l2))
      
      # l1 = [1, 2, 3, [22, 33]]
      # l2 = l1.copy()
      # l1[-1].append(666)
      # print(id(l1[-1]))
      # print(id(l2[-1]))
      # print(id(l1))
      # print(id(l2))
      # print(l1)
      # print(l2)
      
      # l1 = [1, 2, 3, [22, 33]]
      # l2 = l1.copy()
      # l1[0] = 90
      # print(l1)
      # print(l2)
      # import copy
      # l1 = [1, 2, 3, [22, 33]]
      # l2 = copy.deepcopy(l1)
      # print(id(l1))
      # print(id(l2))
      # l1[-1].append(666)
      # print(l1)
      # print(l2)
      
      #相关面试题
      # l1 = [1, 2, 3, [22, 33]]
      # l2 = l1[:]
      # l1[-1].append(666)
      # print(l1)
      # print(l2)
      
      #浅copy ; list dict; 嵌套的可变数据类型是同一个
      #深copy ; list dict : 嵌套的可变数据类型不是同一个
      
      
  • 相关阅读:
    spring + junit 测试
    备份mysql数据库
    JAVA访问Zabbix API
    pro git 读书笔记 3 Git 分支
    pro git 读书笔记 1
    pro git 读书笔记 2
    溢出和剪裁,可见性
    html 与 jsp 文件格式区别
    Eclipse 的 CheckStyle 插件
    【转】单元测试覆盖率
  • 原文地址:https://www.cnblogs.com/zhaoxinblog/p/13196055.html
Copyright © 2011-2022 走看看