Python数据类型——集合

目录

1 概述

2 集合基本操作 

2.1 创建集合

2.2 遍历集合  

2.3 添加元素 

2.4 删除元素  

2.5 交集/并集/差集  


1 概述

在前面,我们已经对Python学习做了系统的知识梳理( Python思维导图)。

这一节我们分享集合。在高中时候,我们就接触了集合,我们今天要用到集合中一个很重要的性质:集合内部元素互异。 

集合( set )和字典( dict )类似,它是一组 key 的集合,但不存储 value 。集合的特性就是: key 不能重复

2 集合基本操作 

2.1 创建集合

set 的创建可以使用 {} 也可以使用 set 函数:
1. >>> s1 = { 'a' , 'b' , 'c' , 'a' , 'd' , 'b' } # 使用 {}
2. >>> {'a', 'c', 'd', 'b'}
3. set ([ 'a' , 'c' , 'b' , 'd' ])
4. >>>
5. >>> s2 = set ( 'helloworld' ) # 使用 set() ,接收一个字符串
6. >>>{'a', 'c', 'd', 'b'}
7. set ([ 'e' , 'd' , 'h' , 'l' , 'o' , 'r' , 'w' ])
8. >>>
9.
>>> s3 = set ([ '.mp3' , '.mp4' , '.rmvb' , '.mkv' , '.mp3' ]) # 使用 set() ,接收一个列表
10. >>> {'.mkv', '.mp3', '.mp4', '.rmvb'}
11. set ([ '.mp3' , '.mkv' , '.rmvb' , '.mp4' ])

2.2 遍历集合  

1. >>> s = { 'a' , 'b' , 'c' , 'a' , 'd' , 'b' }
2. >>> for e in s :
3. ... print e
4. ...
5. a
6. c
7. b
8. d

2.3 添加元素 

add() 方法可以将元素添加到 set 中,可以重复添加,但没有效果。
1. >>> s = { 'a' , 'b' , 'c' , 'a' , 'd' , 'b' }
2. >>> s
3. set ([ 'a' , 'c' , 'b' , 'd' ])
4. >>> s . add ( 'e' )
5. >>> s
6. set ([ 'a' , 'c' , 'b' , 'e' , 'd' ])
7. >>> s . add ( 'a' )
8. >>> s
9. set ([ 'a' , 'c' , 'b' , 'e' , 'd' ])
10. >>> s . add ( 4 )
11. >>> s
12. set ([ 'a' , 'c' , 'b' , 4 , 'd' , 'e' ])

2.4 删除元素  

remove() 方法可以删除集合中的元素 , 但是删除不存在的元素,会抛出 KeyError ,可改用
discard()
1. >>> s = { 'a' , 'b' , 'c' , 'a' , 'd' , 'b' }
2. >>> s
3. set ([ 'a' , 'c' , 'b' , 'd' ])
4. >>> s . remove ( 'a' ) # 删除元素 'a'
5. >>> s
6. set ([ 'c' , 'b' , 'd' ])
7. >>> s . remove ( 'e' ) # 删除不存在的元素,会抛出 KeyError
8. Traceback ( most recent call last ):
9. File "<stdin>" , line 1 , in < module >
10. KeyError : 'e'
11. >>> s . discard ( 'e' ) # 删除不存在的元素 , 不会抛出 KeyError

2.5 交集/并集/差集  

Python 中的集合也可以看成是 数学意义上的无序和无重复元素的集合 ,因此,我们可以对两个集合作交集、并集等。
1. >>> s1 = { 1 , 2 , 3 , 4 , 5 , 6 }
2. >>> s2 = { 3 , 6 , 9 , 10 , 12 }
3. >>> s3 = { 2 , 3 , 4 }
4. >>> s1 & s2 # 交集
5. set ([ 3 , 6 ])
6. >>> s1 | s2 # 并集
7. set ([ 1 , 2 , 3 , 4 , 5 , 6 , 9 , 10 , 12 ])
8. >>> s1 - s2 # 差集
9. set ([ 1 , 2 , 4 , 5 ])
10. >>> s3 . issubset ( s1 ) # s3 是否是 s1 的子集
11. True
12. >>> s3 . issubset ( s2 ) # s3 是否是 s2 的子集
13. False
14. >>> s1 . issuperset ( s3 ) # s1 是否是 s3 的超集
15. True
16. >>> s1 . issuperset ( s2 ) # s1 是否是 s2 的超集
17. False
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值