day06 集合,id, is, ==, 同代码块下的缓存机制,不同代码块下的缓存机制,小数据池,深浅copy

01今日内容大纲

  1. id is == 用法
  2. 代码块
  3. 同一代码块下的缓存机制
  4. 不同代码块下的缓存机制(小数据池)
  5. 总结
  6. 集合(了解)
  7. 深浅copy

02昨日回顾以及作业讲解

  1. 字典初始:
    • 查询速度快,储存大量的关联型数据.
    • 键:必须是不可变的数据类型(int,str,bool,tuple),唯一的.
    • 值:任意数据类型,对象
    • 字典在3.5x版本之前是无序的,3.6x按照初始时的顺序排列,3.7之后有序的
  2. 增删改查
    • 增: setdefualt(), dic['age'] = 18
    • 删:pop键(可以设置返回值). clear清空, del dic["name"]
    • 改: dic["name"] = 'wusir'
    • 查: dic["name"], dic.get("name"), dic.keys(), dic.values(), dic.items()
  3. 字典的嵌套.

03具体内容

  1. id is ==

    # id >>>身份证号:内存地址
    # is >>>判断内存地址是否相同
    # == >>>比较运算,判断两边的值是否相等
    
  2. 代码块

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

    1. 同一个代码块下的缓存机制.
      • 前提条件: 同一代码块下
      • 机制内容: 在内存中只存在一个,即id相同
      • 适用对象: int, str, bool
      • 具体细则: 所有的数字,bool,几乎所有的字符串
      • 优点: 提升性能,节省内存
    2. 不同代码块下的缓存机制:小数据池( -5~256 )
      • 前提条件: 不同代码块下
      • 机制内容: 内存中只存在一个id相同
      • 适用对象: int , str , bool
      • 具体细则: -5~256数字, bool ,满足规则的字符串
      • 优点: 提升性能, 节省内存
  4. 集合 set(): python 基础数据类型,可变数据类型; 容器型的数据类型,要求元素是不可变类型,无序,不重复,

    • 集合的作用:
      • 列表的去重
      • 关系测试: 交集, 并集, 差集, 子集, 超集...
    • 集合的创建
      • set1 = set({1,3,"barry", False})
      • set = {1, 3, "taibai",4,"wuda"} #跟没有键的字典一样
    # 空集合:
    # print({}, type({}))  # 空字典
    # set1 = set()
    # print(set1)
    
    # 集合的有效性测试
    # set1 = {[1,2,3], 3, {'name': 'alex'}}
    # print(set1)
    
    # set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
    # 增:
    # add
    # set1.add('xx')
    # print(set1)
    
    # update迭代着增加
    # set1.update('fdsafgsd')
    # print(set1)
    
    # 删
    # remove
    # remove 按照元素删除
    # set1.remove('alexsb')
    #
    # print(set1)
    # pop 随即删除
    # set1.pop()
    # print(set1)
    
    # 变相改值
    # set1.remove('太白金星')
    # set1.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)
    
    # 用处:数据之间的关系,列表去重。
    
  5. 深浅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[0]))
    # print(id(l2[0]))
    # print(l1)
    # print(l2)
    
    
    # l1 = [1, 2, 3, [22, 33]]
    # l2 = l1.copy()
    # l1[0] = 90
    # print(l1)
    # print(l2)
    
    
    
    # 深copy
    # 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: 嵌套的可变的数据类型不是同一个 。
    

04今日总结

  • id is == 三个方法要会用,知道是做什么的
  • 回答的时候一定要分清楚:同一个代码块下使用一个缓存机制.不同的代码块下使用另一个缓存机制(小数据池)
  • 小数据池:数字范围是-5~256
  • 缓存机制的优点:提升性能,节省内存
  • 集合:列表去重,关系测试
  • 深浅copy: 理解浅copy, 深浅copy,课上练习题整明白

05预习内容

posted @ 2020-03-18 22:45  德楷  阅读(37)  评论(0)    收藏  举报