Python基础---容器集合Set

本文详细介绍了Python中集合(Set)的基本概念、创建方式、常用操作及内置函数,并对比了集合与冰冻集合(Frozenset)的区别。通过实例演示了集合间的数学运算如交集、并集、差集等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合Set(无序集合)

定义:一组包含具有唯一性元素,且无序的数据。

     其中的元素可以是int,float,bool,string,tuple,冰冻集合。复数等

   集合中的元素,无法进行修改

创建:

  1、创建一个空集合:  set()

  2、带元素的集合:{obj1, obj2, obj3,...}

 

集合判断:

  

    在上述图片中,b 是 set1 和 set2 的 交集

           a + b + c 是 set1 和 set2 的 并集

             a 是 set1 相对于 set2 的 差集

    

    在上述图片中,set1 是 set2 的 超集

           set2 是 set1 的 子集

           set1 去除 set2 的区域 为 补集

 

标准操作:

  1、因为无法定位元素,所以增删改查都无法进行,只能使用函数进行增删操作

  2、成员检测  in  &  not in

  3、遍历: for i in set()

    集合推导式。。。

  4、运算符求交集,差集,并集,标准差集

    交集:  x = set1 & set2

    并集:  x = set1 | set2

    差集:  x = set1 - set2  项在set1中,但不在set2中  

    标准差集:x = set1 ^ set2   项在set1和set2中,但是不会同时出现在两者

 1 set1 = {1, 2, 3, 4, 5, 6}
 2 set2 = {4, 5, 6, 7, 8, 9}
 3 print(set1 & set2)
 4 --->{4, 5, 6}
 5 print(set1 | set2)
 6 --->{1, 2, 3, 4, 5, 6, 7, 8, 9}
 7 print(set1 - set2)
 8 --->{1, 2, 3}
 9 print(set1 ^ set2)
10 --->{1, 2, 3, 7, 8, 9}

 

基本函数:

  1、len()

  2、max()  &  min()

  3、set()

  4、add()  

     set.add(obj)  向set中添加元素,一次只能添加一个

  5、删除元素:

    set.pop()  随机删除一个元素

    set.remove(obj)  删除指定元素

    set.discard(obj)   删除指定元素

    两者区别在于,在删除不存在的值时,remove会报错,discard会忽略

  6、clear()

  7、copy()

 

判断函数:

  1、difference()

    获取存在于set1,但是不存在与set2中的数据的集合 即 差集

    set1.difference(set2)

  等价于 set1 - set2

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 set3 = set1.difference(set2)
4 print(set3)
5 --->{3, 4, 5, 6}

  2、difference_update()

    更新set1,使其中的元素编程两个集合的差集

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 set1.difference_update(set2)
4 print(set1)
5 --->{3, 4, 5, 6}

  3、union()

    返回一个包含 set1 和 set2 所有元素,并且去重后的集合(即:并集)

    set1.union(set2)

   等价于 set1 | set2

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 set3 = set1.union(set2)
4 print(set3)
5 --->{1, 2, 3, 4, 5, 6, 7, 8, 9}

  4、update()

    更新set1,使其中的元素变为 两个集合的并集

    set1.update(set2)

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 set1.update(set2)
4 print(set1)
5 --->{1, 2, 3, 4, 5, 6, 7, 8, 9}

  5、intersection()  

    计算两个set的交集    

    set1.intersection(set2) 等价于  set1 & set2

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {4, 5, 6, 7, 8, 9}
3 new_set = set1.intersection(set2)
4 print(new_set)
5 --->{4, 5, 6}

  6、intersection_update()  

    更新set1,使其中的元素变为两个set 的交集

    set1.intersection_update(set2)

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {4, 5, 6, 7, 8, 9}
3 set1.intersection_update(set2)
4 print(set1)
5 --->{4, 5, 6}

  7、issupperset()

    检测一个set是否是另一个set的超集,返回bool

    set1.issupperset(set2)

 1 set1 = {1, 2, 3, 4, 5, 6}
 2 set2 = {1, 2}
 3 print(set1.issuperset(set2))
 4 --->True
 5 
 6 set2 = {1, 2, 3, 4, 5, 6}
 7 print(set1.issuperset(set2))
 8 --->True
 9 
10 set3 = {1, 7}
11 print(set1.issuperset(set3))
12 --->False
13 
14 set4 = {1, 2, 3, 4, 5, 6, 7}
15 print(set1.issuperset(set4))
16 --->False

  8、issubset()

    检测一个set是否是另一个set的子集,返回bool

    set1.issupperset(set2)

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2}
3 print(set2.issubset(set1))
4 --->True

  9、isdisjoint()

    检测两个set是否不相交,返回bool,相交False,不相交True

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 print(set1.isdisjoint(set2))
4 --->False

  10、symmetric_difference()

    返回两个集合的对称差集(即 并集 - 交集)

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 print(set1.symmetric_difference(set2))
4 --->{3, 4, 5, 6, 7, 8, 9}

  11、symmetric_difference_update()

    set1.symmetric_difference_update(set2)

    更新set1,使其中元素变为两个set 的对称差集

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = {1, 2, 7, 8, 9}
3 set1.symmetric_difference_update(set2)
4 print(set1)
5 --->{3, 4, 5, 6, 7, 8, 9}

 

冰冻集合Frozenset:

定义:一种特殊的集合类型,也是集合,就像Tuple之于List一样,Frozenset之于Set

   较之于Set,其中元素无法进行修改

创建:

  1、空冰冻集合:frozenset()   

    但一般不推荐创建空的,因为无法更改   

   2、带数据:frozenset(seq)

    seq可以是 list,tuple,set等容器类数据

1 set1 = {1, 2, 3, 4, 5, 6}
2 set2 = frozenset(set1)
3 print(set2, type(set2))
4 --->frozenset({1, 2, 3, 4, 5, 6}) <class 'frozenset'>

 

基本操作:

  1、成员检测  in & not in

  2、遍历: for i in frozenset()

     集合推导式得到的结果,不是一个冰冻集合,取决于使用哪种括号

相关函数:

  冰冻集合Frozenset可以使用集合Set的相关函数,但是局限于是否修改集合本身

  冰冻集合无法修改元素

 

转载于:https://www.cnblogs.com/lambs/p/8472914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值