Python中的集合

一.集合的定义

1.集合里面的元素是不可重复的

s = {1,2,3,1,2,3,1,2,3,1,2,3}
print(s,type(s))
{1, 2, 3} <class 'set'>
print(s1,type(s1))
{1} <class 'set'>

2.定义一个空集合

s2 = set([])
print(s2,type(s2))
set() <class 'set'>

3.集合应用

列表去重:将列表转换为集合再转回列表。

li = [1,2,3,1,2,3,1,2,3]
print(list(set(li)))
[1, 2, 3]

                                                                                                                                                                                                                                  

PS:记录一个错误

一开始用list定义了一个集合,然后发现需要用到list转换集合类型,重新开始定义了一个集合,在使用list转换的时候时候报了很多次错误,最后意识到是定义的list变量还没有删除,函数意义的list失效,所以一定尽量避免用函数进行定义

                                                                                                                                                                                                                                  

二.集合特性

集合支持的特性只有:成员操作符 索引, 切片, 重复, 连接,均不支持。

成员操作符:

li = {1,2,3,4}
print(4 in li)
True
print(5 in li)
False
print(5 not in li)
True
print(4 not in li)
False

for循环

li = {1,2,3,4}
for i in li:
    print(i,end ="|")
1|2|3|4|

for循环并且求索引(枚举)

FCB = {'terStegen','Semedo','Pique','Rakitic','Busquets','Suarze'}
for number,player in enumerate(FCB):
    print("%s:%s" %(number+1,player))

三.集合常用方法

集合为可变, 无序数据类型,即添加的顺序, 和在集合中存储的顺序不同

1.增加

增加单个元素

                           set.add(元素)

FCB = {'terStegen','Semedo','Pique','Rakitic','Busquets','Suarze'}
FCB.add('Messi')
print(FCB)
{'terStegen', 'Messi', 'Pique', 'Rakitic', 'Suarze', 'Semedo', 'Busquets'}

增加多个元素

set.update ( { 元素 } )   一定加花括号!!!!

否则:

正确做法:

FCB = {'terStegen','Semedo','Pique','Rakitic','Busquets','Suarze'}
FCB.update({'Villa','Perdo','Vidal'})
print(FCB)
{'terStegen', 'Villa', 'Vidal', 'Pique', 'Perdo', 'Rakitic', 'Suarze', 'Semedo', 'Busquets'}

2.集合删除

set.pop( )              删除集合中随机元素(多为第一个元素

{'terStegen', 'Villa', 'Vidal', 'Pique', 'Perdo', 'Rakitic', 'Suarze', 'Semedo', 'Busquets'}
FCB.pop()
'terStegen'
print(FCB)
{'Villa', 'Vidal', 'Pique', 'Perdo', 'Rakitic', 'Suarze', 'Semedo', 'Busquets'}

set.remove( )删除指定元素

FCB.remove('Villa')
print(FCB)
{'Vidal', 'Pique', 'Perdo', 'Rakitic', 'Suarze', 'Semedo', 'Busquets'}

3.交集、并集、差集

并集:

集合1.union(集合2)

集合1  集合2

s1 = {1,2,3}
s2 = {2,3,4}
print("并集:",s1.union(s2))
并集: {1, 2, 3, 4}
print("并集:",s1 | s2)
并集: {1, 2, 3, 4}

交集:

集合1 . intersection(集合2)

集合1   集合2

s1 = {1,2,3}
s2 = {2,3,4}
print("交集:",s1.intersection(s2))
交集: {2, 3}
print("交集:",s1 & s2)
交集: {2, 3}

差集

集合1.difference(集合2)

集合1 - 集合2

s1 = {1,2,3}
s2 = {2,3,4}
print("差集:",s1.difference(s2))
差集: {1}
print("差集:",s2.difference(s1))
差集: {4}
print("差集:",s1 - s2)
差集: {1}
print("差集:",s2 - s1)
差集: {4}

对等差分:

集合1.symmetric_difference(集合2)

集合1 ^ 集合2

print("对等差分:",s1.symmetric_difference(s2))
对等差分: {1, 4}
print("对等差分:",s1 ^ s2)
对等差分: {1, 4}

集合判断

isdisjoint()如果两个集合有一个空交集,返回 True
issubset()如果另一个集合包含这个集合,返回 True
issuperset()如果这个集合包含另一个集合,返回 True
s3 = {1,2,3}
s4 = {1,2,3,4}
print(s3.issubset(s4))
True
print(s3.issuperset(s4))
False
print(s3.isdisjoint(s4))
False

 四.集合的应用

1.求共同好友

Villa ={'terStegen','Semedo','Pique'}
Messi = {'Pique','Rakitic','Busquets','Suarze'}
print("Villa与Messi的共同好友为:%s" %(Villa & Messi))
Villa与Messi的共同好友为:{'Pique'}

2.微信群提醒:xxx与群里其他人都不是微信好友关系

 

3.权限判断:
                   网站: 权限: s1 = {A,B, C}, 用户westos目前的权限为s2 = {A,C},只有权限一致才可访问。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值