python中可变集合set和不可变集合frozenset的区别

序言

集合是不同元素的无序集合。与序列类型不同(如列表,字符串等),集合是没有切片操作的。

集合分为两种类型:

  • set —— 可变集合。集合中的元素可以动态的增加或删除。
  • frozenset —— 不可变集合。集合中的元素不可改变。

注:对于 并集, 交集, 差集 等的返回值,与最左边的操作数具有相同的类型。例如:s & t  取交集。s集合是一个set类型的集合,t集合是一个frozenset类型的集合,则返回的结果将是set类型的集合。

frozenset()函数

描述:可以将其它的组合数据类型转化为不可变集合类型(或将可变的集合类型set转变为不可变的集合类型 frozenset),返回一个无重复元素且排序任意的不可变集合。

语法: frozenset() -> empty frozenset object  返回一个不可变空集合

              frozenset(iterable) -> frozenset object  返回一个不可变新集合

  • iterable —— 要转换的组合数据类型。

程序示例①:

s1 = frozenset() #创建一个不可变的空集合。
l = [1.23,"a"] #列表类型
d = {1:"a",2:"b"} #字典类型
a = (1,2,"b") #元组类型
s = "厉害了,我的国" #字符串
c = set("1,2,3a") #可变集合

#将列表,字典,元组,字符串 可变集合 转化为不可变集合
s2 = frozenset(s)
s3 = frozenset(l) 
s4 = frozenset(d)
s5 = frozenset(a)
s6 = frozenset(c) #将可变集合转换为不可变集合s6

print(s1)
print(s2)
print(s3)
print(s4)
print(s5)
print(s6)

程序运行结果:

frozenset()
frozenset({'我', '了', '的', '害', ',', '国', '厉'})
frozenset({1.23, 'a'})
frozenset({1, 2})
frozenset({1, 2, 'b'})
frozenset({',', '2', '1', 'a', '3'})

适用于可变集合set不可变集合frozenset的函数(方法):

 

集合类型的通用函数(方法)
函数(方法)描述
s.copy() 复制集合s
a.difference(b,c,d...)求差集
a.intersection(b,c,d...) 求交集
s.isdisjoint(b) 判断集合s和集合b有没有相同项(元素)
a.issubset(b)判断集合a是否是集合b的子集
a.issuperset(b)判断集合a是否是集合b的超集
a.symmetric_difference(b)求对称差集
a.union(b,c,d...)求并集
len(s)求集合s中项(元素)的数量

 

                                                   详解链接

仅适用于可变集合的函数(方法):

可变集合函数(方法)用法
函数(方法)描述
s.add(x)将x添加到集合s中
s.clear()删除集合s中所有元素(项)
s.discard(value)从集合s中删除元素value
s.remove(value)从集合s中删除元素value
s.pop()返回集合s中任意一个元素,并将其删除
s.difference_update(x) 从集合s中删除同时也在x中出现的所有元素
 s.update(x)将x中的所有元素添加到集合s中
s.symmetric_difference_update(x)  计算集合s与x的对称差集,并将结果保存在集合s中
s.intersection_update(x)计算集合s与x的交集,并将结果保存在集合s中

                                                       详解链接

 

 

 

 

 

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值