4.4.3 集合之间的关系
🚩关于集合,我们给出这么几种关系:
1️⃣ 集合A和集合B相等:如果集合A中的元素和集合B中的元素是一模一样的,那么称集合A和集合B相等。❗️ 注意:我们之前说过,集合是无序的,故对于集合{1, 2, 3, 4}其实和集合{4, 3, 2, 1}是相等的,判断两个集合相等,我们使用 != == 去判断:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/14 13:18 # 欢迎大家关注AIoT相关博客~ a = {1, 2, 3, 4} b = {4, 1, 3, 2} c = {1, 2, 3} print(a == b) print(a != c)
2️⃣ 集合A是集合B的子集:在集合A中的元素都存在于集合B之中,集合A是集合B的子集,我们也称集合B是集合A的超集,如果集合A是集合B的子集,且集合A不等于集合B,那么称集合A是集合B的真子集:
我们在代码中可以用 issubset() 和 issuperset() 分别判断子集和超集,也可以使用 < <= >= 去判断两个集合之间的关系:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/14 13:20 # 欢迎大家关注AIoT相关博客~ a = {1, 2, 3} b = {1, 2, 3, 4} # 用 issubset() 判断a是否为b的子集: print(a.issubset(b)) # 用 <= 判断a是否为b的子集: print(a <= b) # 用 < 判断a是否为b的真子集: print(a < b) # 用 issuperset() 判断b是否为a的超集: print(b.issuperset(a)) # 用 >= 判断b是否为a的超集: print(b >= a)
3️⃣ 判断两个集合是否有交集:使用方法 isdisjoint() 判断两个集合是否 没有交集,如果两个集合有交集返回 False,如果两个集合没有交集返回 True:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/14 13:28 # 欢迎大家关注AIoT相关博客~ a = {1, 2, 3, 4} b = {4, 5, 6} c = {7, 8, 9} # isdisjoint() 有交集返回False,没有交集返回True # 判断a和b是否没有交集: print(a.isdisjoint(b)) # 判断a和c是否没有交集: print(a.isdisjoint(c))
4️⃣ 交集、并集、差集、对称差集:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/14 17:54 # 欢迎大家关注AIoT相关博客~ a = {1, 2, 3} b = {3, 4, 5} print('----------求 a 和 b 的交集:----------') print(a.intersection(b)) print(a & b) print('----------求 a 和 b 的并集:----------') print(a.union(b)) print(a | b) print('----------求 a 和 b 的差集:----------') print(a.difference(b)) print(a - b) print('----------求 a 和 b 的对称差集:----------') print(a.symmetric_difference(b)) print(a ^ b)
*4.4.4 集合常用函数(方法)汇总
注:本小节带 *,不需要进行学习,可以简单进行了解
⛲️ 本小节可以说还是比较重要的,但为什么本小节打 * 了呢?这是因为我们没必要去记忆这些函数/方法(期末考试除外),在我们需要的时候我们只需要来本小节去查找用法即可
函数(方法) | 用法介绍 |
set() | 将一连串的对象转为集合 |
del | 删除集合 |
add() | 将集合中加入一个新的元素,如果原集合中已有该元素则忽略此操作 |
update() | 将另一个集合中的元素加入到该集合中,并自动去重 |
remove(x) | 删除指定的元素x,如果x不存在则显示KeyError |
discard(x) | 删除指定的元素x,如果x不存在则忽略本操作 |
pop() | 删除集合中的第一个元素 |
clear() | 清空集合 |
issubset() | 判断一个集合是否为另一个集合的子集 |
issuperset() | 判断一个集合是否为另一个集合的超集 |
issubset() | 判断一个集合是否为另一个集合的子集 |
isdisjoint() | 判断两个集合是否没有交集,没有交集返回True,有交集返回False |
intersection() | 求两个集合的交集 |
union() | 求两个集合的并集 |
difference() | 求两个集合的差集 |
symmetric_difference() | 求两个集合的对称差集 |
4.4.5 集合生成式
🚩集合生成式其实和列表生成式是一模一样的,只是把[]
换成了{}
,注意列表,集合,字典都有属于自己的生成式,只有元组没有元组生成式。
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/14 18:36 # 欢迎大家关注AIoT相关博客~ a = {i * i for i in range(10)} print(a)
我们可以看到集合 a 中的元素其实是乱序的,这也印证了最开始提到的集合是无序的