Python中的集合

本文介绍了Python中集合的创建,包括使用花括号和set()函数。详细阐述了集合的新增元素操作如add()和update(),以及删除操作remove()、discard()和pop()。此外,还讨论了集合间的关系,如相等、子集、超集的判断,以及无交集的检测。最后,讲解了集合的数学运算,如并集、交集、差集和对称差,并给出了集合生成式的示例。

一.废话不多说直接进入主题

1.集合的创建方式:

1:利用花括号 { } 创建集合
2:利用函数 set( )创建集合
set()函数也是python内置函数的其中一个,属于比较基础的函数,其中可以传入元组,列表等等作为参数,从而转为一个集合

代码如下:

# 第一种创建集合方法
c = {1, 23, True, 12.22, }

# 第二种创建集合的方法,如果不传入参数则表示创建一个空集合
# 创建一个空集合不能使用c2={}这样的形式,这个只能创建出
# 一个空的字典
tup01 = (222, 333, False)
c2 = set(tup01)
c3 = {}
print(type(c2)) # <class 'set'>
print(type(c3)) # <class 'dict'>

2.集合的相关操作

2.1集合元素的新增操作:

注:集合中不允许存在相同的元素,即使添加了相同的元素也不会抛出异常,只会保留唯一值。
创建集合的方式有两种:
1.调用add()方法, 一次添中-个元素
2.调用update()方法至少添中一个元素:可以将元组,列表,集合作等为参数传入该函数当中,使其添加多个元素

# add()添加元素
c1 = {1, 23, 4, 12, "me", "key", 12.5}
c1.add("NiuMa")
c1.add("NBA")
print(c1)  # {1, 4, 12, 12.5, 'NiuMa', 23, 'key', 'NBA', 'me'}

# update()添加元素
c2 = {1, 2}
c2.update({1, 23, 4})
c2.update([222,333])
c2.update((1111,2222))
print(c2) # {1, 2, 4, 1111, 23, 2222, 333, 222}

2.2集合元素的删除操作

1.调用remove()方法, 一次删除一 个指定元素,如果指定的元素不存在抛出KeyError
2.调用discard()方法, 一次删除- -个指定元素,如果指定的元素不存在不抛异常”
3.调用pop()方法,一次只删除-个任意元素
4.调用clear(方法, 清空集合

c1 = {1, 23, 4, 12, "me", "key", 12.5}
# remove()
# c1.remove("22")  指定删除元素22不存在,抛出KeyError异常
c1.remove("key")
c1.remove("me")
print(c1)  # {1, 4, 23, 12, 12.5}

# discard()
# c1.discard("22222")  :使用discard()删除指定元素,
#当元素不存在的时候也不会抛出异常
c1.discard(12.5)
print(c1)  # {1, 4, 23, 12}

# pop() :随机删除集合中一元素
print(c1)  # {1, 4, 23, 12}
c1.pop()
print(c1)  # {4, 23, 12}

# clear() :将集合中元素全部清除
print(c1)  # {4, 23, 12}
c1.clear()
print(c1)  # set() :表示空集合

3.集合之间的关系

3.1两个集合是否相等
●可以使用运算符==或!=进行判断
3.2一个集合是否是另一-个集合的子集,一个集合是否是另一个集合的超集
●可以调用方法issubset进行判断
●B是A的子集
●可以调用方法issuperset进行判断
●A是B的超集
3.3两个集合是否没有交集
●可以调用方法isdisjoint进行判断,没有交集换行True,有交集返回False

# 集合之间的关系

# 集合是否相等(== / !=)
a = {1, 2, 3, 4, 6666}
b = {1, 2, 3, 6666, 4}
print(a == b)  # True
print(a != b)  # False

# 一个集合是否是另一个的子集,以及是否是另一个的超集
a1 = {1, 2, 3, 4, 5, 6}
b2 = {1, 2, 3}
# 判断子集
print(b2.issubset(a1))  # True :b2是a1的子集
# 判断超集
print(a1.issuperset(b2)) # True :a1是b2的超集

# 判断两个集合是否有交集,没有交集换行True,有交集返回False
print(a1.isdisjoint(b2)) # False

4.集合之间的数学操作(交,并,差,对称差)

4.1.两个集合的并可以使用:union() , |
4.2 两个集合的交可以使用:intersection() , &
4.3 两个集合的差可以使用:difference , -
4.4 两个集合的对称差可以使用:symmetric_difference() , ^
总的来说:记住符号简单些:
案例代码如下:

# 集合之间的数学操作

a = {1, 2, 3, 4, 5, 6, 7, "A", "B", "C"}
b = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "D", "E"}

# 两集合的并:union() , |
print(a.union(b))  # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'D', 'E', 'C', 'A', 'B'}
print(a | b)  # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'D', 'E', 'C', 'A', 'B'}

# 两集合的交 : intersection() , &
print(a.intersection(b))  # {1, 2, 3, 4, 5, 6, 7}
print(a & b)  # {1, 2, 3, 4, 5, 6, 7}

# 两集合的差 : difference , -
print(a.difference(b))  # {'C', 'B', 'A'}
print(a - b)  # {'C', 'B', 'A'}

# 两集合的对称差: symmetric_difference() , ^
print(a.symmetric_difference(b)) # {8, 9, 10, 'E', 'B', 'A', 'C', 'D'}
print(a ^ b) # {8, 9, 10, 'E', 'B', 'A', 'C', 'D'}

5.集合生成式

语法:{关于元素i的表达式 for i in 可迭代对象 }

# 集合生成式
ls01 = [1, 2, 22, 33, 44, 55]
c1 = {i * 2 for i in range(1, 11)}
c2 = {i * 2 for i in ls01}
print(c1) # {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
print(c2) # {2, 66, 4, 44, 110, 88}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值