2021-04-16

集合

集合是无序、可变序列,使用一对大括号界定,元素不可重复,同一个集合中每个元素都是唯一的。
集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。

集合创建与删除

a={3,5}  #创建集合对象
x={3,5,[2]}  #集合中每个元素都必须是不可变的
Traceback (most recent call last):
File "<pyshell#44>",line 1,in <module>
x={3,5,[2]}
TypeError:unhashable type:'list'
set([0, 1, 2, 3, 0, 1,2,3,7,8])  #转换时自动去掉重复元素
{0,1,2,3,7,83}
set('Hello world')    #把字符串转换为集合,自动去除重复
{'','d','r','o',‘w','l','H','e'}
x= set()   #空集合
set([(1,2),(3,)])   #只包含简单值的元组可以作为集合的元素
{(1,2),(3,)}
set([(1,2),(3,),{4}]) #集合不能作为集合的元素
Traceback (most recent call last):
File "<pyshell#46>",line 1, in <module>
set([(1,2),(3,),{4}])
TypeError:unhashable type:'set’

集合元素增加与删除

(

1) add()方法
s= 20,30,50
s #自动调整顺序,不需要关心这一点
{50,20,30}
s.add(40)
s
{40,50,20,30}
s.add(25) #自动调整顺序
s
{40,50,20,25,30}
s.add(25) #集合中已经有25,该操作被忽略
s
{40,50,20,25,30}
s.update((30,70)) #自动忽略重复的元素
s
{70,40,50,20,25,30}
(2) pop()、remove()、discard()
s.discard(50)  #删除59
s
{70,40,20,25,30}
s.discard(3)  #集合中没有3,该操作被忽略
s
{70,40,20,25,30}
s.remove(3)  #使用remove()方法会抛出异常
Traceback(most recent call last):
File "<pyshell#61>",line 1,in <module>
s.remove(3)
KeyError:3
s.pop() #随机弹出并删除一个元素
70
s
{40,20,25,30}

集合运算

a_set = set([8,9, 10 11, 12,13])
b_set ={0,1,2,3,7,8}
a_set  l  b_set    #并集,返回新集合
                          #自动忽略重复元素
{0,1,2,3,7,8,9,10,11,12,13}
a_set  &  b_set   #交集
{8}
a_set  -  b_set   #差集
{9,10,11,12,13}
a_set ^ b_set    #对称差集
{0,1,2,3,7,9,10,11,12,13}
{1,2,3}<{1,2,3,4}   #第一个集合是第二个集合的真子集
True
{1,3,2}<={1,2,3}   #第一个集合是第二个集合的子集
True
{1,2,5}>{1,2,4}    #第二个集合不是第一个集合的子集
False

内置函数对集合的操作

x={1,8,30,2,5}
x   #集合元素的存储顺序和写入顺序不一样
{1,2,5,8,30}
len(x)   #返回元素个数
5
max(x)   #返回最大值
30
sum(x)  #所有元素之和
46
sorted(x)   #内置函数sorted()总是返回列表
[1,2,5,8,30]
list(map(str,x))
['1','2','5','8','30']

list(filter(lambda item:item%5==0,x))   #支持filter()函数,保留能被5整除的数
[5,30]
list(enumerate(x))     #支持enumerate()函数
[(0,1),(1,2),(2,5),(3,8),(4,30)]
all(x)   #检查是否所有元素都等价于True
True
any(x)   #检查是否有元素等价于True
True
list(zip(x))    #支持zip()函数
[(1,),(2,),(5,),(8,),(30,)]
list(reversed(x))   #不支持reversed()函数
Traceback (most recent call last):
File "<pyshell#56>",line 1, in <module>
list(reversed(x))
TypeError:'set'object is not reversible
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值