序言

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

集合分为两种类型:

  • 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中