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

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

集合分为两种类型:

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

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中

                                                       详解链接

猜你喜欢

转载自blog.csdn.net/qq_40678222/article/details/83184819
今日推荐