Python学习笔记_7_集合

1、集合

与列表、字典一样,是可变的数据结构。

但是只有键,没有值,相当于是没有value的字典,字典是无序的,所以集合也是无序的。

2、集合的创建

#使用花括号创建
s1 = {"python","hello",98}					#元组是小括号,列表是中括号,集合是大括号
s2 = {1,2,3,1,2,3}
print(s2)									#输出:{1,2,3},因为集合中的元素不允许重复
#使用set()创建
s1 = set(range(6))
s2 = set([1,2,3,4,5,5])						#将列表转成集合
s3 = set((1,2,3,88,99,99))					#将元组转为集合
s4 = set("python")
print(s1)									#输出:{0,1,2,3,4,5}
print(s2)									#输出:{1,2,3,4,5},去掉重复的。
print(s3)									#输出:{1,2,88,3,99},去掉重复的,元组内元素是无序存储的,所以输出时顺序会变动。
print(s4)									#输出:{'n','h','p','y','t','o'},无序。
#创建空集合
s1 = {}										#创建方式错误,输出的类型不是集合类型,而是字典类型。
s2 = set()									#创建方式正确。

3、判断元素是否在集合内

s = {1,2,3,4,5}
print(1 in s)
print(1 not in s)

4、集合中元素的新增

s = {1,2,3,4,5}
s.add(9)									#只能增加一个
s.update({6,7,8})							#能增加多个
s.update([10,11,12])
s.update((13,14,15))

5、集合中元素的删除

s = {1,2,3,4,5}
s.remove(2)									#只能删除一个

s.remove(500)								#会抛出异常
s.discard(500)								#不会抛出异常

s.pop()										#任意删除一个
s.clear()									#清空集合

6、集合间的关系

#两个集合是否相等
s1 = {1,2,3,4}
s2 = {2,3,1,4}
print(s1=s2)								#输出:True
#一个集合是否是另一个集合的子集
s1 = {1,2,3,4,5,6}
s2 = {2,3,4}
print(s2.issubset(s1))						#输出:True
#一个集合是否是另一个集合的超集
s1 = {1,2,3,4,5,6}
s2 = {2,3,4}
print(s1.issuperset(s2))					#输出:True
#两个集合是否含有交集
s1 = {1,2,3,4}
s2 = {3,4,5,6}
print(s1.isdisjoint(s2))					#输出:False,有交集则为False

7、集合的数学操作

#交集操作
s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.intersection(s2))					#输出:{2,3,4}
print(s1 & s2)								#输出:{2,3,4}
#并集操作
s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.union(s2))							#输出:{1,2,3,4,5,6}
print(s1 | s2)								#输出:{1,2,3,4,5,6}
#差集操作
s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.difference(s2))					#输出:{1}
print(s1-s2)								#输出:{1}
#对称差集操作
s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.symetric_difference(s2))			#输出:{1,5,6}
print(s1^s2)								#输出:{1,5,6}

8、集合生成式

#将列表中的中括号变成大括号即可,但列表是有序的,而集合是无序的。
lst = [i*i for i in range(6)]
s = {i*i for i in range(6)}

9、列表、字典、元组、集合总结

数据结构是否可变是否可重复是否有序定义符号
列表(list)可变可重复有序[ ]
字典(dict)可变键不可重复,但值可以重复无序{key:value}
元组(tuple)不可变可重复有序( )
集合(set)可变不可重复无序{ }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值