教你python中什么是集合?(二)
今天马哥教育要跟大家继续分享文章教你Python中什么是集合?(二)集合支持len()方法进行元素数量的获取,也支持max()方法和min方法获取集合中的最大元素与最小元素。 Python入门新手和正在Python学习的小伙伴快来看一看吧,希望能够对大家有所帮助 !
交集/并集/补集/差集
首先我们来看张图,理解交集、并集、补集、差集的概念。
假设有集合A{1,2,3}和B{3,4,5}。
交集:A和B中相同部分的内容,{3}。
并集:A和B去重后的全部内容,{1,2,3,4,5}。
补集:A去除与B相交部分后的内容,{1,2}。
差集:A和B不相交部分的全部内容,{1,2,4,5}。
示例代码:
# 创建集合 s1 = set('Python') s2 = set('PyCharm') # 交集操作:获取两个集合中共有元素。 print (s1 & s2) # 显示输出结果为:{'y', 'P', 'h'} print (s1.intersection(s2)) # 显示输出结果为:{'y', 'P', 'h'} # 并集操作:获取两个集合去除重复元素后的全部元素。 print (s1 | s2) # 显示输出结果为:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'} print (s1.union(s2)) # 显示输出结果为:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'} # 补集操作:获取当前集合去除与另一集合交集元素后的全部元素。 print (s1 - s2) # 显示输出结果为:{'o', 't', 'n'} print (s1.difference(s2)) # 显示输出结果为:{'o', 't', 'n'} print (s2 - s1) # 显示输出结果为:{'m', 'a', 'r', 'C'} print (s2.difference(s1)) # 显示输出结果为:{'m', 'a', 'r', 'C'} # 差集操作:获取两个集合去除交集元素后的全部元素。 print (s1 ^ s2) # 显示输出结果为:{'o', 't', 'm', 'a', 'r', 'n', 'C'} print (s1.symmetric_difference(s2)) # 显示输出结果为:{'o', 't', 'm', 'a', 'r', 'n', 'C'}
以上操作中,对集合本身内容并无影响,大家可以在执行以上代码后,继续显示输出s1和s2的内容,能够看到没有任何变化。
接下来,我们再来看几个方法,这些方法会改变集合内容。
第一种:difference_update(set) 函数,能够将当前集合和指定集合进行补集运算,并将当前集合内容更新为运算结果。
示例代码:
s1=set('1234') s2=set('456') s1.difference(s2) # 该操作对s1内容无影响 print (s1) # s1无变化,显示输出结果为:{'3', '4', '2', '1'} s1.difference_update(s2) # 更新集合s1的内容为s1-s2后的结果 print (s1) # s1内容被更新,显示输出结果为:{'3', '2', '1'}
第二种:intersection_update(set) 函数,能够将当前集合和指定集合进行交集运算,并将当前集合内容更新为运算结果。
示例代码:
s1=set('1234') s2=set('456') s1.intersection_update(s2) # 更新集合s1的内容为s1 & s2后的结果 print (s1) # s1内容被更新,显示输出结果为:{'4'}
第三种:symmetric_difference_update(set) 函数,能够将当前集合和指定集合进行差集运算,并将当前集合内容更新为运算结果。
示例代码:
s1 = set('1234') s2 = set('456') s1.symmetric_difference_update(s2) # 更新集合s1的内容为s1 ^ s2后的结果 print(s1) # s1内容被更新,显示输出结果为:{'6', '3', '2', '5', '1'}
成员关系
Python中提供了一些方法,让我们能够判断一个集合中是否包含某一元素;
也可以判断一个集合是否另一个集合的子集或超集。
还可以判断一个集合与另一个集合是否没有交集。
在之前我们接触过“in”这操作符,可以用来判断操作符前方的值是否被后方的序列包含(成员关系)。
另外,我们还可以使用“not in”,判断操作符前方的值是否未被后方的序列包含(非成员关系)。
在集合中,我们同样可以使用这两个操作符。
另外,我们还可以通过以下方法,判断一个集合是否另外一个集合的子集或超集以及没有交集。
isdisjoint(set):可以判断集合是否与指定集合不存在交集,参数set为集合;如果成立返回结果为True,否则为False。
issubset(set):可以判断集合是否指定集合的子集,参数set为集合;如果成立返回结果为True,否则为False。
issuperset(set):可以判断集合是否指定集合的超集,参数set为集合;如果成立返回结果为True,否则为False。
示例代码:
s1 = set('好好学习') s2 = set('天天想上') s3 = set('好好学习天天想上') print ('好' in s1) # 显示输出结果为:True print ('好' not in s2) # 显示输出结果为:True print (s1.isdisjoint(s2)) # 显示输出结果为:True print (s1.issubset(s3)) # 显示输出结果为:True print (s3.issuperset(s1)) # 显示输出结果为:True
复制集合
使用copy()方法能够对集合进行复制。
大家通过下方代码即可理解复制的用途。
示例代码:
a = set('小楼一夜听春语') # 创建集合存入变量a b = a # 创建变量b引用变量a的集合 c = a.copy() # 创建变量c复制变量a的值 print (a) # 显示输出结果为:{'春', '夜', '楼', '听', '语', '小', '一'} print (b) # 显示输出结果为:{'春', '夜', '楼', '听', '语', '小', '一'} print (c) # 显示输出结果为:{'春', '夜', '楼', '听', '语', '小', '一'} a.remove('一') # 删除变量a中集合的一个元素 print (a) # 变量a发生改变,显示输出结果为:{'春', '夜', '楼', '听', '语', '小'} print (b) # 变量b因为引用变量a,同样发生改变,显示输出结果为:{'春', '夜', '楼', '听', '语', '小'} print (c) # 变量c没有改变,显示输出结果为:{'春', '夜', '楼', '听', '语', '小', '一'}
如果还不能够理解,我们可以看下面这张图。
代码中,b = a实际上是将b指向了a的内容,所以当a的内容发生变化时,b同步发生了变化。
而c = a.copy()则是将a的内容真正进行了复制,不再受a的变化影响。
以上就是马哥教育今天为大家分享的关于教你Python中什么是集合(二)的文章,希望本篇文章能够对正在从事Python相关工作的小伙伴们有所帮助,想要了解更多相关知识记得关注马哥教育官网,每天都会有大量优质内容与大家分享!
声明:文章来源于网络,侵删!