zoukankan      html  css  js  c++  java
  • 集合类型内置方法

    集合类型内置方法

    一、作用

    ​ 就是存储一堆元素的东西, 容器类型数据

    二、定义方式

    以{}用逗号隔开不可变数据类型(重复的元素会去掉),注意当s = {}定义时,他是是字典,不是集合,定义空集合必须得用set(),打印顺序随机

    s = {1, 2, 1, 'a', 'a', 'c'}
    # s = {[1,2], 23, 3, 4, 5, 6, 4, 32, 4, '12', 'e', 'sdf'} # 报错
    
    print(s)
    

    结果:

    {1, 2, 'a', 'c'}

    三、内置方法

    1. 长度len()

      pythoners = {'小明', '小红', '小花', '小李'}
      print(len(pythoners))
      

      结果:

      4

    2. in/ not in

      pythoners = {'小明', '小红', '小花', '小李'}
      print('小红' in pythoners)
      

      结果:

      True

    3. |并集、union 全部

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      print(pythoners | linuxers)
      print(pythoners.union(linuxers))
      

      结果:

      {'小红', '小米', '小芳', '小田', '小李', '小花', '小明'}
      {'小红', '小米', '小芳', '小田', '小李', '小花', '小明'}

    4. &交集、intersection 公共的

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      print(pythoners & linuxers)
      print(pythoners.intersection(linuxers))
      

      结果:

      {'小明'}
      {'小明'}

    5. -差集、difference 去除与自己相同的

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      print(pythoners - linuxers)
      print(pythoners.difference(linuxers))
      

      结果:

      {'小李', '小花', '小红'}
      {'小李', '小花', '小红'}

    6. ^对称差集、symmetric_difference,去除公共的

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      print(pythoners ^ linuxers)
      print(pythoners.symmetric_difference(linuxers))
      

    {'小芳', '小红', '小田', '小花', '小米', '小李'}
    {'小芳', '小红', '小田', '小花', '小米', '小李'}

    三、了解方法

    1. 删除(随机删除最后一项)pop()

       pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      pythoners.pop()
      print(pythoners)
      

      结果:

      {'小花', '小红', '小明'}

    2. 添加集合(两个集合合并在一起)

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      pythoners.update(linuxers)
      print(pythoners)
      

      结果:

      {'小花', '小芳', '小明', '小李', '小红', '小米', '小田'}

    3. 清空clear()

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      pythoners.clear()
      print(pythoners)
      

      结果:

      set()

    4. 复制

      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      print(pythoners.copy())
      

      结果:

      {'小红', '小花', '小李', '小明'}

    5. 移除remove(),不存在会报错

    pythoners = {'小明', '小红', '小花', '小李'}
    
    pythoners.remove('小明')
    print(pythoners)
    

    结果;

    {'小李', '小红', '小花'}

    1. 移除discard(),移除不存在,不会报错

      pythoners = {'小明', '小红', '小花', '小李'}
      pythoners.discard('小红')
      print(pythoners)
      
      

      结果:

      {'小明', '小花', '小李'}

    2. 判断是否是子集

      pythoners = {'小明', '小红', '小花', '小李'}
      pythoners2 = {'小明', '小红', '小花', '小李', "小芳"}
      print(pythoners.issubset(pythoners2))
      
      

      结果:

      True

    3. 判断是否是他的父集

      pythoners = {'小明', '小红', '小花', '小李'}
      pythoners2 = {'小明', '小红', '小花', '小李', "小芳"}
      print(pythoners.issuperset(pythoners2))
      print(pythoners2.issuperset(pythoners))
      

      结果:

      False
      True

      
      pythoners = {'小明', '小红', '小花', '小李'}
      linuxers = {'小明', '小田', '小米', '小芳'}
      
      # 删除这个集合和另一个集合相同的数据
      pythoners.difference_update(linuxers)
      print(pythoners)
      
      # #
      # pythoners.symmetric_difference_update(linuxers)
      # print(pythoners)
      
      # 判断两个集合是否有交集,没有返回true,无返回false
      # res = pythoners.isdisjoint(linuxers)
      # print(res)
      
      # 有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
      stu_info_list = [
          {'name': 'nick', 'age': 19, 'sex': 'male'},
          {'name': 'egon', 'age': 18, 'sex': 'male'},
          {'name': 'tank', 'age': 20, 'sex': 'female'},
          {'name': 'tank', 'age': 20, 'sex': 'female'},
          {'name': 'egon', 'age': 18, 'sex': 'male'},
      ]
      
      new_stu_info_list = []
      for stu_info in stu_info_list:
          if stu_info not in new_stu_info_list:
              new_stu_info_list.append(stu_info)
      
      for new_stu_info in new_stu_info_list:
          print(new_stu_info)
      
    4. 存一个值or多个值:多个值,且值为不可变类型。

    5. 有序or无序:无序

    6. 可变or不可变:可变数据类型

    四、总结

    4.1 常用操作

    1. 长度len
    2. 成员运算in和not in
    3. |并集、union
    4. &交集、intersection
    5. -差集、difference
    6. ^对称差集、symmetric_difference
    7. ==
    8. 父集:>、>= 、issuperset
    9. 子集:<、<= 、issubset

    4.2 常用方法

    1. add
    2. remove
    3. difference_update
    4. discard
    5. isdisjoint
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    简单工厂模式实例
    浅析面向对象和面向过程
    equals与“==”的区别
    IIS挂起网站配置文件地址
    先安装win7时IIS的安装
    验证码的使用
    c#引用命名空间的作用
    ADO与ADO.NET的区别
    常用的数据库访问方式
    Exercise 11: Asking Questions
  • 原文地址:https://www.cnblogs.com/randysun/p/11305832.html
Copyright © 2011-2022 走看看