zoukankan      html  css  js  c++  java
  • Python 基础数据类型 IV (集合)

    1 今日内容大纲

    ​ 1.is == id的用法

    ​ 2.代码块

    ​ 3.代码块下的缓存机制

    ​ 4.总结

    ​ 5.集合

    ​ 6.深浅copy

    2昨日回顾

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

    3具体内容

    1. id is ==

      #id 内存地址
      i = 100
      s = 'alex'
      print(di(1),id(s))
      
      #==比较两边的值是否相等
      l1 = [1,2,3]
      l2 = [1,2,3]
      print(l1 == l2)
      s1 = 'alex'
      s2 = 'alex'
      print(s1 == s2)
      
      #is 判断的是内存地址是否相同
      #可变类型,不可变类型
      #id相同,值一定相同
      #值相同,id不一定相同
      l1 = [1,2,3]
      l2 = [1,2,3]
      print(id(l1),id(l2))
      
      
    2. 代码块

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

      • 同一个代码块下的缓存机制

        • 前提条件:同一个代码块
        • 适用的对象:所有的数字,bool,几乎所有的字符串
        • 优点:提升性能,节省内存
      • 不同代码块下的缓存机制:小数据池

        • 前提条件:不同代码块内
        • 适用的对象:int bool str
        • 具体细则:-5~245数字,bool,满足规则的字符串
        • 优点:提升性能,节省内存
      l1 = 1000
      l2 = 1000
      print(id(l1),id(l2))
      print(li is l2)
      s1 = [1,2,3]
      s2 = [1,2,3]
      print(id(s1),id(s2))
      print(s1 is s2)
      
    4. 总结

        • 分同一个代码块下使用一个缓存机制,不同的的代码块使用另一个缓存机制(小数据池)
        • 小数据池的范围是:-5~256
        • 缓存机制的优点:提升性能,节省内存
    5. 集合

      • python基础数据类型之:集合set。容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合时无序的。{}
      • 集合的作用
        • 列表的去重
        • 关系测试:交集,并集,差集,...
        • pass
    #集合的创建
    set1 = set({1,2,'name',False})
    set1 = {1,2,'金星','alex'}
    print(set1)
    
    #空集合
    print({},type({}))#空字典
    set1 = set()
    print(set1)
    
    #集合的有效性测试
    set1 = {[1,2,3],5,'alex'}
    print(set1)
    set1 = {{'name':'alex'},234}
    print(set1)
    
    #	集合的增删改查
    set1 = {'太白','男神','alex','金星'}
    #增
    #add
    set1.add('xx')
    print(set1)
    #update跌代着增加
    set1.update('qwert')
    print(set1)
    
    #删
    #remove 按照元素删除
    set1.remove('太白')
    print(set1)
    #pop 随机删除
    set1.pop()
    print(set1)
    
    #变形改值
    set1.remove('xx')
    set1.add('vv')
    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}
    print(set1 < set2)
    
    #超集
    print(set2 > set1)
    
    #列表的去重
    lis = [1,2,3,4,4,4,5,5,1]
    set1 = set(lis)
    lis = list(set1)
    print(lis)
    
    # 用处:数据之间的关系;列表去重
    
    1. 深浅copy(考)
    #赋值运算
    l1 = [1,23,4,[543,222]]
    l2 = l1
    l1.append(8)
    print(l1,l2)
    
    #浅copy
    l1 = [1,23,4,[543,222]]
    l2 = l1.copy()
    l1.append(66)
    print(l1,id(l1),l2,id(l2))
    
    l1[-1].append(66)
    print(l1,id(l1),l2,id(l2))
    
    l1[0] = 222
    print(l1,id(l1),l2,id(l2))
    
    #深copy
    import copy
    l1 = [1,2,3,[4,5,6]]
    l2 = copy.deepcopy(l1)
    print(l1,l2)
    l1[-1].append(33)
    print(l1,l2)
    l1[0] =99
    print(l1,l2)
    
    #题
    l1 = [1,2,3,[4,5]]
    l2 = l1[:]
    l1[-1].append(33)
    print(l1,l2)
    
    #浅copy:list dict:嵌套的可变的数据类型是同一个
    #深copy:list dict:嵌套的可变的数据类型不是同一个
    

    4今日总结

    • id is ==的用法
      • id 内存地址
      • is
      • == 判断数据值是否相等
    • 缓存机制
      • 同一个代码块下适用一个缓存机制;不同代码块下适用另一个缓存机制(小数据池)
    • 小数据池的范围:-5~256
    • 缓存机制的优点:提升性能,节省内存
    • 集合:
      • 作用
        • 列表去重
        • 关系测试
    • 深浅copy
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    教你搭建SpringSecurity3框架(附源码)
    浅谈数据库联合查询
  • 原文地址:https://www.cnblogs.com/xiaohei-chen/p/11874963.html
Copyright © 2011-2022 走看看