Python50-51:核心语法-数据容器-集合set
集合set场景在业务中需要定义一个变量来批量存储用户的手机号或身份号或银行卡号唯一的列表list、元组tuple可以存吗不可以因为这两种类型是可以存储重复元素的此时就可以使用集合set来存储。set会自动去重存储不重复的元素。介绍集合set是一种无序的、不可重复、可修改的数据容器。# 定义集合s1 {C, D, X, T, O, U}# 定义空集合s2 set() # 实际调用的是一个函数注意空集合的定义不可以使用{}{}表示的是空字典由于集合是无序的因此是不支持下标索引访问的。# 定义 s1 {5, 3, 2, 0, 9, 12, 43, 64, 22, 5, 0} print(s1) # {0, 64, 2, 3, 5, 9, 43, 12, 22} print(type(s1)) # class set s2 {} print(s2) # {} print(type(s2)) # class dict # 定义空集合 s2 set() print(s2) # set() print(type(s2)) # class set集合set - 常见操作# -------常见方法-------- # add()添加元素到集合 s1 {100, 200, 300, 400, 500, 600, 700, 800} print(s1) # {800, 100, 200, 300, 400, 500, 600, 700} s1.add(1200) print(s1) # {800, 100, 200, 300, 400, 1200, 500, 600, 700} # remove()移除集合中的指定元素指定元素不存在将报错 s1.remove(200) print(s1) # {800, 100, 300, 400, 1200, 500, 600, 700} # pop()随机删除集合中的元素并返回 e s1.pop() print(e) # 800 print(s1) # {100, 300, 400, 1200, 500, 600, 700} # clear()清空集合 s1.clear() print(s1) # set() s2 {A, B, C, D, E, X, Y} s3 {C, E, Y, Z} # difference()求两个集合的差集存在于第一个集合但不存在于第二个集合 print(s2.difference(s3)) # {X, A, D, B} print(s3.difference(s2)) # {Z} # union()求两个集合的并集 print(s2.union(s3)) # {C, A, Z, B, D, Y, E, X} print(s3.union(s2)) # {C, A, Z, B, D, Y, E, X} # intersection()求两个集合的交集 print(s2.intersection(s3)) # {C, E, Y} print(s3.intersection(s2)) # {C, E, Y}案例# 案例 根据提供的班级学生的选课情况完成如下需求 1. 找出同时选修了法语和艺术的学生 2. 找出同时选修了所有四门课程的学生 3. 找出选修了足球但是没有选修篮球的学生 4. 统计每一个学生选修的课程数量 # 选修足球学生名单 football_set {王林, 曾牛, 徐立国, 通天, 天运子, 韩立, 厉飞雨, 乌丑, 紫灵} # 选修篮球学生名单 basketball_set {张铁, 墨居仁,王林, 姜老道, 曾牛, 王蝉, 韩立, 天运子, 李化元, 厉飞雨, 云露} # 选修法语学生名单 french_set {许木, 王卓, 十三, 虎咆, 姜老道, 天运子, 红蝶, 厉飞雨, 韩立, 曾牛} # 选修艺术学生名单 art_set {通天, 天运子, 韩立, 虎咆, 姜老道, 紫灵} # 1. 找出同时选修了法语和艺术的学生 # 方式一 fa_set french_set.intersection(art_set) print(f同时选修了 法语 和 艺术 的学生{fa_set}) # 方式二 ---交集 fa_set2 french_set art_set print(f同时选修了 法语 和 艺术 的学生{fa_set2}) # 2. 找出同时选修了所有四门课程的学生 all_set football_set basketball_set french_set art_set print(f同时选修了所有四门课程的学生{all_set}) all_set2 football_set.intersection(basketball_set, french_set, art_set) print(f同时选修了所有四门课程的学生{all_set2}) all_set3 football_set.intersection(basketball_set).intersection(french_set).intersection(art_set) print(f同时选修了所有四门课程的学生{all_set3}) # 3. 找出选修了足球但是没有选修篮球的学生 - 差集 # 方式一 fb_set football_set.difference(basketball_set) print(f选修了足球但是没有选修篮球的学生{fb_set}) # 方式二- ---差集 fb_set2 football_set - basketball_set print(f选修了足球但是没有选修篮球的学生{fb_set2}) # 方式三集合推导式 --- 快速构建集合语法{要往集合中添加的数据 for s in set1 if 条件} fb_set3 {s for s in football_set if s not in basketball_set} print(f选修了足球但是没有选修篮球的学生{fb_set3}) # 4. 统计每一个学生选修的课程数量 # 4.1 获取到学生名单 -- 并集 total_set football_set.union(basketball_set).union(french_set).union(art_set) print(total_set) total_set2 football_set.union(basketball_set, french_set, art_set) print(total_set2) total_set3 football_set | basketball_set | french_set | art_set print(total_set3) # 4.2 获取每一个学生选修的课程数量 total_list [*football_set, *basketball_set, *french_set, *art_set] for item in total_set: print(f{item} 选修了 {total_list.count(item)})D:\py_project_heima\.venv\Scripts\python.exe D:\py_project_heima\第二章\test.py 同时选修了 法语 和 艺术 的学生{韩立, 虎咆, 天运子, 姜老道} 同时选修了 法语 和 艺术 的学生{韩立, 虎咆, 天运子, 姜老道} 同时选修了所有四门课程的学生{韩立, 天运子} 同时选修了所有四门课程的学生{韩立, 天运子} 同时选修了所有四门课程的学生{韩立, 天运子} 选修了足球但是没有选修篮球的学生{徐立国, 乌丑, 通天, 紫灵} 选修了足球但是没有选修篮球的学生{徐立国, 乌丑, 通天, 紫灵} 选修了足球但是没有选修篮球的学生{徐立国, 乌丑, 通天, 紫灵} {韩立, 李化元, 云露, 十三, 王林, 许木, 通天, 王卓, 曾牛, 虎咆, 厉飞雨, 徐立国, 张铁, 天运子, 姜老道, 王蝉, 红蝶, 乌丑, 墨居仁, 紫灵} {韩立, 李化元, 云露, 十三, 王林, 许木, 通天, 王卓, 曾牛, 虎咆, 厉飞雨, 徐立国, 张铁, 天运子, 姜老道, 王蝉, 红蝶, 乌丑, 墨居仁, 紫灵} {韩立, 李化元, 云露, 十三, 王林, 许木, 通天, 王卓, 曾牛, 虎咆, 厉飞雨, 徐立国, 张铁, 天运子, 姜老道, 王蝉, 红蝶, 乌丑, 墨居仁, 紫灵} 韩立 选修了 4 李化元 选修了 1 云露 选修了 1 十三 选修了 1 王林 选修了 2 许木 选修了 1 通天 选修了 2 王卓 选修了 1 曾牛 选修了 3 虎咆 选修了 2 厉飞雨 选修了 3 徐立国 选修了 1 张铁 选修了 1 天运子 选修了 4 姜老道 选修了 3 王蝉 选修了 1 红蝶 选修了 1 乌丑 选修了 1 墨居仁 选修了 1 紫灵 选修了 2小结1. 集合set操作的运算符 | -交集|并集-差集2. 集合推导式的写法变量名称{i表达式 for i in 列表}变量名称{i表达式 for i in 列表 if 条件}声明本篇学习笔记参考黑马程序员相关课程部分素材来源于网络公开资料及本人补充文中为个人整理复盘仅供学习交流使用。

相关新闻

Python53:核心语法-数据容器-字典dict-常用操作

Python53:核心语法-数据容器-字典dict-常用操作

字典dict-常用操作# -------- 字典 常见操作------------ dict1 {"王林":670, "李慕婉":608, "许立国":580, "韩立":688} print(dict1)# 添加 - key不存在就是添加 dict1["涛哥"] 550 print(dict1) # {王林: 670, 李慕…

2026/10/12 9:19:23 阅读更多 →
rsuite Panel 组件滚动阴影(scrollShadow)深度解析:从 API 用法到源码实现原理

rsuite Panel 组件滚动阴影(scrollShadow)深度解析:从 API 用法到源码实现原理

前端UI组件 【免费下载链接】rsuite 🧱 A suite of React components . 项目地址: https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 scrollShadow 是 rsuite Panel 组件在 v5.62.0 引入的一项实用特性:当面板内容区域出现滚动…

2026/10/12 12:10:34 阅读更多 →
ChaosBlade K8s 故障演练用例详解:节点不可调度导致 DaemonSet 未完全调度

ChaosBlade K8s 故障演练用例详解:节点不可调度导致 DaemonSet 未完全调度

运维云原生SREAI Agent人工智能 【免费下载链接】chaosblade An easy to use and powerful chaos engineering experiment toolkit.(阿里巴巴开源的一款简单易用、功能强大的混沌实验注入工具) 项目地址: https://gitcode.com/gh_mirrors/ch/…

2026/10/12 13:09:55 阅读更多 →

最新新闻

3天从85%降到20%!这3个降AIGC平台让我导师直夸原创

3天从85%降到20%!这3个降AIGC平台让我导师直夸原创

还记得上周三凌晨两点,当我第三次收到知网AIGC检测报告时,手心都在冒汗——85%的AI相似度,40%的查重率,这意味着我的毕业论文根本达不到盲审要求。导师直接在我的初稿上批注“学术合规性存疑,建议重写”,那…

2026/10/14 20:50:15 阅读更多 →
Simple Live跨平台播放实现:media_kit与mpv的清晰度、硬件解码策略

Simple Live跨平台播放实现:media_kit与mpv的清晰度、硬件解码策略

【免费下载链接】dart_simple_live 简简单单的看直播(SimpleLive续) 项目地址: https://gitcode.com/gh_mirrors/dart/dart_simple_live 点击查看 免费下载 Simple Live(simple_live_app)是一款"简简单单看直播&…

2026/10/14 20:50:15 阅读更多 →
自考论文降AI率工具实测:8款改写器对比与避坑指南

自考论文降AI率工具实测:8款改写器对比与避坑指南

我上个月帮一位考友改了篇自考本科毕业论文,过学校查重平台后跳出一行小字:“疑似AI生成内容占比偏高”,把人吓够呛,但那篇文章确实是他自己一个字一个字敲出来的。这绝不是个例。2026年自考季临近,找我咨询降AI率工具…

2026/10/14 20:50:15 阅读更多 →
AI配音如何处理多音字?文字转语音发音错误的解决方法

AI配音如何处理多音字?文字转语音发音错误的解决方法

使用AI配音制作视频时,有些句子看起来没有问题,生成语音后却会出现读音错误。尤其是多音字、人名、地名和专业术语,即使上下文明确,语音合成也不一定能准确判断。如果旁白中出现错误发音,不仅影响听感,还可…

2026/10/14 20:50:15 阅读更多 →
智慧校园供应商考察报告怎么写?关键要素与评估标准全解析

智慧校园供应商考察报告怎么写?关键要素与评估标准全解析

去年帮一所高校做智慧校园数据中台的选型,前后面谈了六家供应商,每家都拍着胸脯说自家平台架构先进、接口开放、实施经验丰富。可等到考察报告写完、提交评审会的时候,我心里清楚,六家里面至少有两家在“先进架构”四个字上掺了水…

2026/10/14 20:50:15 阅读更多 →
yolov8-face 核心算子全解析:NMS、边界框格式转换与掩码处理的源码级指南

yolov8-face 核心算子全解析:NMS、边界框格式转换与掩码处理的源码级指南

人工智能计算机视觉深度学习 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face 点击查看 免费下载 本文是 ops.md 参考文档的深度展开,以 ultralytics/yolo/utils/ops.py 为…

2026/10/14 20:49:14 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →