python集合

集合set和固定集合frozenset

set的元素值必须是不可变的,set中可以存储int、str、tuple等不可变类型,但不能存储 list、dict 等可变类型

  • 集合是可变的容器,固定集合是不可变的集合

  • 集合相当于只有键没有值的字典,当然你也可以理解为键和值相等

  • 集合内的数据都是唯一的,不可变的

创建集合

空集合 set()

非空集合用 {} 括起来,值用逗号分隔开

s1 = {} #不是集合,是空字典
print(s1, type(s1)) #{} <class 'dict'>

s2 = {1, 2, 3, 4, 5} #包含5个元素的集合
s3 = set([1, 2, 3, 4, 5]) #包含5个元素的集合
s4 = set("hello") #包含5个元素的集合


#2.使用set()函数创建集合
s5 = set() #空集合
print(s5, type(s5))
s6 = set([1, 2, 3, 4, 5]) #包含5个元素的集合
s7 = set("hello") #包含5个元素的集合

创建固定集合frozensets的方式

#创建固定集合
# 使用frozenset()函数创建固定集合

s8 = frozenset([1, 2, 3, 4, 5]) #包含5个元素的固定集合
s9 = frozenset("hello") #包含5个元素的固定集合
s10 = frozenset() #空集合

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合的基本操作

官方文档:https://docs.python.org/zh-cn/3.13/library/stdtypes.html#set-types-set-frozenset

        添加元素

                

  • s.add( x ) 添加元素到集合。

  • s.update( x ) 添加元素到集合,且参数可以是列表、元组、字典等,x 可以有多个,用逗号分开。

s1 = set([1, 2, 3, 4, 5])
s1.add(6) #添加元素6
print(s1) #输出{1, 2, 3, 4, 5, 6}
s1.update([7, 8, 9]) #添加元素7、8、9
print(s1) #输出{1, 2, 3, 4, 5, 6, 7, 8, 9}

        删除元素

                

  • s.remove( x ):将元素 x 从集合 s 中移除,不存在会发生错误。

  • s.discard( x ):将元素 x 从集合 s 中移除,不存在也不会发生错误。

  • s.pop():对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

s1 = set([1, 2, 3, 4, 5])
s1.remove(2) #删除元素2,如果元素不存在,会报错
print(s1) #输出{1, 3, 4, 5}
s1.discard(4) #删除元素4,如果元素不存在,不报错
print(s1) #输出{1, 3, 5}
s1.pop() #随机删除一个元素
print(s1) #输出{1, 3}



del s1 #删除集合

        问访

                集合是无序的、不可重复的数据结构,不能通过索引来访问其元素。所以也没有对应的修改功能。

        常用API

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()返回集合的交集。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素
len()计算集合元素个数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值