Python在入门-自学笔记-9集合

Python零基础入门自学笔记

参考教程【Python教程】《零基础入门学习Python》最新版@B站@鱼C-小甲鱼

本文记录的主要是Python中的集合。


集合是无序的、唯一的。集合比列表效率高很多

0. 创建集合

0.0 创建集合

#0. 花括号{}
{'jiangyun','wangxiaojia'}
    #{'wangxiaojia', 'jiangyun'}
#1. 集合推导式
{s for s in 'ftcy'}
    #{'y', 'c', 't', 'f'}
#2. 类型构造器
set('yyyyyyds')  #去重性
    #{'y', 'd', 's'}

0.1 添加元素

update( ) 可以更改集合内容

s = set('ftcy')
s.update('ttl','szd','327',[531])
    #{'3', 'l', 'c', 'd', 'y', 's', 'z', '2', 't', 'f', 531, '7'}
s.add('531')
    #{'3', 'l', '327', 'c', 'd', 'y', 's', 'z', '2', 't', 'f', 531, '7'}

0.2 删除元素

s = set('ftcy')
s.remove('sjd')     #会报错
s.discard('sjd')    #静默处理 不会报错
s    #{'c', 'y', 't', 'f'}
s.pop()             #随机弹出,弹出的就被删除了
s.clear()           #清空集合

0.3 运算改写集合

s = set('ftcy')
t = set('ttl')
s.intersection_update(t)            #s {'t'}
t.difference_update(s)              #t {'l'}
s.symmetric_difference_update(t)    # s{'t', 'l'}

1. 集合运算

1.0 检查集合内是否有某个元素 in

s = set('yyyyyyds')
'y' in s

1.1 是否有重复元素

s = [1,1,2,3,5]         #列表可以重复
len(s) == len(set(s))   #列表和集合长度不一样
#False

1.2 是否有交集

s = set('ftcy')
s.isdisjoint(set('yds'))   #是否无交集
#False 说明有交集,y

1.3 是否子集/超集

s = set('ftcy')
t = set('ftcyszd')
s.issubset(t)      #子集
t.issuperset(t)    #超集
#True
s <= set(t)    #子集
s < set(t)     #真子集
t > set(s)     #真超集
t >= set(s)    #超集

1.4 并集

s = set('ftcy')
s.union({'ttl'})
    #{'t', 'f', 'c', 'ttl', 'y'}
s | t | set('szd')
    #{'t', 'f', 'l', 'd', 'c', 'y', 's', 'z'}

1.5 求交集

s = set('ftcy')
s.intersection({'ttl'})
    #set()
t = set('ttl')
s.intersection(t)
    #{'t'}
s & t & set('szd')
    #set()

1.6 差集

s = set('ftcy')
t = set('ttl')
s.difference(t)    #{'c', 'y', 'f'}
t.difference(s)    #{'l'}
s - t - set('szd')
    #{'c', 'y', 'f'}

以上可以多参数。


1.7 求对称差集

只能两个参数。不能多参数。
A∪B➖A∩B

s = set('ftcy')
t = set('ttl')
s.symmetric_difference(t)    #{'l', 'c', 'y', 'f'}
s ^ t    #{'l', 'c', 'y', 'f'}

使用运算符,两侧必须都是集合类型。

2. 不可变集合

set( ) 创建的是可变集合
frozenset( )

t = frozenset('ftcyszd')
t    #frozenset({'c', 'd', 'y', 's', 'z', 't', 'f'})

3. 可哈希

字典的键、集合的元素,都必须是“可哈希”的。
可哈希:哈希值不变
不可变的对象,是可哈希的;
可变的对象,是不可哈希的。

hash(1)      #1 对整数,哈希值是本身
hash(1.0)    #1 不同对象,值相等,哈希值相等
hash([1,2,3])  #会报错
    #列表、集合是可改的,不可哈希的。
hash((1,2,3))  #可哈希

可变集合不可哈希,但是不可变集合可哈希。于是有👇

嵌套集合

x = {1,2,3}
y = {x,4,5}     #会报错
x = frozenset(x)
y = {x,4,5}     #{frozenset({1, 2, 3}), 4, 5}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值