集合 集合运算

集合(set)

  • 集合中的元素是无序的
  • 集合中不能出现重复的元素
  • 集合只能存储不可变序列

集合的创建

集合和字典相同都用{},但是集合没有键,只有元素值
集合中存贮列表会报错,因为只能存贮不可变序列,而列表是可变的
直接创建:

se = {1,2,3,4}
print(se,type(se))
{1, 2, 3, 4} <class 'set'>

通过set()创建:

se = set([1,2,3,4])  #这里函数中用列表,因为要存储序列
print(se,type(se))
s = set({'name':'小王','age':18})   #用set函数将字典转换为集合仅会保留字典的键
print(s)

{1, 2, 3, 4} <class 'set'>
{'name', 'age'}

集合的修改

add()

add()向集合中添加元素

s = {1,2,3}
print('修改前',s)
s.add(4)
print('修改后',s)
修改前 {1, 2, 3}
修改后 {1, 2, 3, 4}

update()

update()将一个集合中的元素添加到另一个集合中

s1 = {1,2,3}
s2 = {4,5,6}
print('修改前',s1)
s1.update(s2)
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {1, 2, 3, 4, 5, 6}

pop()

pop()可以删除集合中随机一个元素,一般为最后一个

s1 = {1,2,3}
print('修改前',s1)
s1.pop()
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {2, 3}

remove()

remove()删除集合中指定的元素

s1 = {1,2,3}
print('修改前',s1)
s1.remove(3)
print('修改后',s1)
修改前 {1, 2, 3}
修改后 {1, 2}

集合的运算

交集运算

假设有两个数集A和B,A包含1、2、3,B包含3、4、5,这两个数集中很好发现,都有数字3,那么如图所示,A和B交在一起的部分3,就是A和B的交集。
交集

  • python中计算交集的运算符是 “ & ”
s1 = {1,2,3}
s2 = {1,2,3,4,5,6}
s3 = s1 & s2
print(s3)
{1, 2, 3}

差集运算

再看A和B交集外的1、2还有4、5,这一部分就是交集外的部分,我们称他们为A和B的差集。

差集
python中计算差集的运算符是 “ - ”

s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1 - s2
print(s3)
{7}

也可以用difference()方法

s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1.difference(s2)
print(s3)
{7}

并集运算

并集字面意思就比较好理解了,并在一起,那么就是两组数集放在一起,就是如图所示的1、2、3、4、5.注意一点,并集不重复,即使两个数组中都有3,并集中不会重复出现两个3。

并集
python中计算并集的运算符是 “|”

s1 = {1,2,3}
s2 = {1,2,3,4,5,6}
s3 = s1 | s2
print(s3)
{1, 2, 3, 4, 5, 6}

异或集运算

异或集指集合中不相交的部分
python中计算异或集的运算符是 “ ^ ”

s1 = {1,2,3,7}
s2 = {1,2,3,4,5,6}
s3 = s1 ^ s2
print(s3)
{4, 5, 6, 7}

子集,真子集,超集,真超集

  • 子集:对bai于两个非空集合duA与B,如果集合A的任何一个元素都是集合zhiB的元素,我们就说 A ⊆ B(读作A含于daoB),或 B ⊇ A(读作B包含A),称集合A是集合B的子集.

  • 真子集:如果A是B的子集,并且B中至少有一个元素不属于A,那么集合A叫做集合B的真子集.

  • 如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集。 S1是S2的超集,若S1中一定有S2中没有的元素,则S1是S2的真超集,反过来S2是S1的真子集。

”<= “检查一个集合是否另一个集合的子集
“ < ” 检查一个集合是否是另一个集合的真子集
“> = ”检查一个集合是否另一个集合的超集
“ > ” 检查一个集合是否另一个集合的真超集

s1 = {1,2,3,}
s2 = {1,2,3,4,5,6}
s3 = s1 < s2
s4 = s1 <= s2
s5 = s1 > s2
s6 = s1 >= s2
print(s3,s4,s5,s6)
True True False False 

猜你喜欢

转载自blog.csdn.net/xdc1812547560/article/details/107495716
今日推荐