python自学(集合)

本文详细介绍了Python集合的基本概念、创建方式、操作方法,包括新增、删除元素,以及集合间的关系和数学操作,如交集、并集、差集和对称差集。此外,还展示了集合生成式的使用。

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

集合:Python语言提供的一种内置数据结构,与列表、字典一样都属于可变类型的序列

集合是没有value的字典

集合的创建方式

1、直接{}   ------s={'Python','hello',90}

2、使用内置函数set()

'''第一种创建方式使用{}'''
s={1,2,2,3,4,5,5}
print(s)#{1, 2, 3, 4, 5}   集合中的元素不允许重复
print(type(s))#<class 'set'>
'''第二种创建方式使用set()'''
s=set(range(6))
print(s)#{0, 1, 2, 3, 4, 5}
print(type(s))#<class 'set'>
print(set([3,4,53,85]))#{85, 3, 4, 53}   集合中的元素是无序的
print(set((3,4,2)))#{2, 3, 4}
print(set('Python'))#{'o', 'h', 'P', 't', 'y', 'n'}
print(set({3,'er',5}))#{'er', 3, 5}
print(set())#set()

定义空集合必须用s=set()

集合的相关操作

判断操作------in或not in

新增操作

1、调用add()方法,一次添中一个元素

2、调用update()方法至少添加一个元素

删除操作

1、调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError

2、调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常

3、调用pop()方法,一次只删除一个任意元素

4、调用clear()方法,清空集合

'''新增操作'''
s={10,20,30.444,66}
s.add(2)
print(s)#{2, 66, 10, 20, 30.444}
s.update({3,12})#字典
print(s)#{2, 66, 3, 10, 12, 20, 30.444}
s.update([1,6])#列表
print(s)#{1, 2, 66, 3, 6, 10, 12, 20, 30.444}
s.update((7,8,9))#元组
print(s)#{1, 2, 66, 3, 6, 7, 8, 9, 10, 12, 20, 30.444}
'''删除操作'''
s.remove(10)
print(s)#{1, 2, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
#s.remove(400)
#print(s)#KeyError: 400
s.discard(2)
print(s)#{1, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
s.discard(5)#不会抛出异常
print(s)#{1, 66, 3, 6, 7, 8, 9, 12, 20, 30.444}
s.pop()#pop方法不能添加参数
print(s)#{66, 3, 6, 7, 8, 9, 12, 20, 30.444}---随机删除
s.clear()
print(s)#set()

集合间的关系

1、两个集合是否相等----可以使用运算符==或!=进行判断

2、一个集合是否是另一个集合的子集----可以调用方法issubset进行判断

3、一个集合是否是另一个集合的超集----可以调用issuperset进行判断

4、两个集合是否没有交集----可以调用方法isdisjoint进行判断

'''集合间的关系'''
s1={10,20,30,40}
s2={20,10,40,30}
print(s1==s2)#True
print(s1!=s2)#False
s3={10,20}
s4={10,20,30}
s5={10,60}
print(s3.issubset(s4))#True
print(s5.issubset(s4))#False
print(s4.issuperset(s3))#True
print(s4.issuperset(s5))#False
print(s4.isdisjoint(s5))#False  有交集为False

集合的数学操作

1、交集操作

s1={10,20,30,40}
s2={10,20,50,60}
print(s1.intersection(s2))#{10, 20}
print(s1 & s2)#{10, 20}   intersection()与&等价,交集操作

2、并集操作

s1={10,20,30,40}
s2={10,20,50,60}
print(s1.union(s2))#{40, 10, 50, 20, 60, 30}
print(s1|s2)#{40, 10, 50, 20, 60, 30}  union()与|等价,并集操作

3、差集操作

s1={10,20,30,40}
s2={10,20,50,60}
print(s1.difference(s2))#{40, 30}
print(s2.difference(s1))#{50, 60}
print(s1-s2)#{40, 30}   difference和-等价,差集操作

4、对称差集操作

s1={10,20,30,40}
s2={10,20,50,60}
print(s1.symmetric_difference(s2))#{40, 50, 60, 30}
print(s1^s2)#{40, 50, 60, 30}   symmetric_difference()与^等价, 对称差集操作

集合生成式

用于生成集合的公式{i*i  for  i   in range(1,10)}-------将{}修改为[]就是列表表达式,没有元组生成式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值