小数据池 深浅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 : 嵌套的可变数据类型不是同一个
    
    

猜你喜欢

转载自www.cnblogs.com/zhaoxinblog/p/13196055.html