IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python 集合 -> 正文阅读

[Python知识库]Python 集合

Python 集合

集合

  • 集合是容器:将{}作为容器标志,多个元素用逗号隔开

  • 集合是可变的;

  • 集合是无序的;

  • 元素:不可变的数据、元素是唯一的(具备自动去重的功能)

  • 集合的操作

    • 查 - 遍历

      for 元素 in 集合:
          循环体
      
      nums = {23, 90, 89, 78}
      for x in nums:
          print(x, end=' ')
          
      [Out]
      89 90 78 23
      
      • 集合.add(元素) - 在集合中添加指定元素
      • 集合.update(序列) - 将序列中的元素全部添加到集合中
      nums = {23, 90, 89, 78}
      nums.add(45)
      print(nums)
      nums.update('abc')
      print(nums)
      
      [Out]
      {45, 78, 23, 89, 90}
      {'c', 45, 78, 23, 89, 90, 'a', 'b'}
      
      • 集合.remove(元素) - 删除指定元素,如果元素不存在,会报错
      • 集合.discard(元素) - 删除指定元素,如果元素不存在,不会报错
      nums = {23, 90, 89, 78}
      nums.remove(89)
      print(nums)
      nums.discard(90)
      print(nums)
      
      [Out]
      {90, 78, 23}
      {78, 23}
      
    • 集合无法直接修改元素的值,如果非要改,就要改的元素删除,添加新的元素

  • 数学集合运算

    nums1 = {1, 2, 3, 4, 5, 6, 7}
    nums2 = {5, 6, 7, 8, 9}
    
    • 集合1 & 集合2 - 获取两个集合的公共元素

      print(nums1 & nums2)
      
      [Out]
      {5, 6, 7}
      
    • 集合1 | 集合2 - 两个集合所包含的所有元素

      print(nums1 | nums2)
      
      [Out]
      {1, 2, 3, 4, 5, 6, 7, 8, 9}
      
    • 集合1 - 集合2 - 获取集合1中除了包含在集合2中的元素

      print(nums1 - nums2)
      
      [Out]
      {1, 2, 3, 4}
      
    • 集合2 - 集合1 - 获取集合2中除了包含在集合1中的元素

      print(nums2 - nums1)
      
      [Out]
      {8, 9}
      
    • 集合1 ^ 集合2 - 将两个集合合并,去掉中间公共部分

      print(nums1 ^ nums2)
      
      [Out]
      {1, 2, 3, 4, 8, 9}
      
    • 集合1 > 集合2 -> 判断集合2是否是集合1的真子集

      print({10, 20, 30} > {1, 2})
      print({10, 20, 30, 40} > {10, 30})  
      print({10, 20, 30, 40} > {10, 20, 30, 40})   
      
      [Out]
      False
      True
      False
      
    • 集合1 >= 集合2 -> 判断集合2是否是集合1的子集

      print({10, 20, 30, 40} >= {10, 20, 30, 40})   
      
      [Out]
      True
      

练习

  1. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    students = [
        {'name': 'stu1', 'age': 18, 'score': 98, 'tel': '1123', 'gender': 'male'},
        {'name': 'stu2', 'age': 28, 'score': 76, 'tel': '8999', 'gender': 'female'},
        {'name': 'stu3', 'age': 20, 'score': 53, 'tel': '678', 'gender': None},
        {'name': 'stu4', 'age': 22, 'score': 98, 'tel': '667', 'gender': 'male'},
        {'name': 'stu5', 'age': 32, 'score': 80, 'tel': '892', 'gender': None},
        {'name': 'stu6', 'age': 17, 'score': 56, 'tel': '431', 'gender': 'female'}
    ]
    
    1. 统计不及格学生的个数

      count = 0
      for i in students:
          if i.get('score') < 60:
              count += 1
      print(count)
      
    2. 打印不及格学生的名字和对应的成绩

      for i in students:
          stu_score = i.get('score')
          if stu_score < 60:
              print(i.get('name'), stu_score)
      
    3. 打印手机尾号是8的学生的名字

      for i in students:
          if int(i.get('tel')) % 10 == 8:
              print(i.get('name'))
      
    4. 打印最高分和对应的学生的名字

      max_score = 0
      for i in students:
          stu_score = i.get('score')
          if stu_score > max_score:
              max_score = stu_score
      else:
          for i in students:
              score = i.get('score')
              if score == max_score:
                  print(score, i.get('name'))
      
    5. 删除性别不明的所有学生

      index = 0
      while index < len(students):
          if students[index].get('gender') == None:
              del students[index]
              continue
          index += 1
      print(students)
      
    6. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

      count = len(students)
      for i in range(1, count):
          for j in range(i):
              if students[i].get('score') > students[j].get('score'):
                  students[i], students[j] = students[j], students[i]
      print(students)
      
  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    Chinese = {'stu1', 'stu3', 'stu4', 'stu5', 'stu7', 'stu8'}
    Math = {'stu1', 'stu2', 'stu3', 'stu6', 'stu8'}
    English = {'stu2', 'stu3', 'stu4'}
    
    1. 求选课学生总共有多少人

      set1 = Chinese | Math | English
      print('总人数为:', len(set1))
      
    2. 求只选了第一个学科的人的数量和对应的名字

      set2 = Chinese - (Math | English)
      print(len(set2), set2)
      
    3. 求只选了一门学科的学生的数量和对应的名字

      set3 = (Chinese ^ Math ^ English) - (Chinese & Math &  English)
      print(len(set3), set3)
      
    4. 求只选了两门学科的学生的数量和对应的名字

      set4 = (Chinese | Math | English) - (Chinese ^ Math ^ English)
      print(len(set4), set4)
      
    5. 求选了三门学生的学生的数量和对应的名字

      set5 = Chinese & Math & English
      print(len(set5), set5)
      
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 22:58:57  更:2021-07-22 22:59:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 12:31:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码