序言
集合是不同元素的无序集合。与序列类型不同(如列表,字符串等),集合是没有切片操作的。
集合分为两种类型:
- 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中 |