ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python50-51:核心语法-数据容器-集合set

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 条件}声明本篇学习笔记参考黑马程序员相关课程部分素材来源于网络公开资料及本人补充文中为个人整理复盘仅供学习交流使用。
返回列表