Python中set与frozenset方法和区别详解
1. set方法
1.1. 概述
set是Python中的一种集合类型,它是无序的,且不允许有重复的元素。set可以用序列或者可迭代对象创建,也可以通过set()函数创建一个空集合。set中的元素类型必须是可哈希的,例如数字,字符串,元组等不可变类型。
1.2. 创建set
可以通过以下方式创建set:
s = set('hello')
print(s)
# 结果:{'o', 'l', 'h', 'e'}
1.3. 常用方法
set中的常用方法有:
- add(elem): 添加一个元素到set中;
- remove(elem): 从set中移除指定的元素;
- pop(): 随机删除set中的一个元素;
- copy(): 返回一个set的拷贝;
- clear(): 移除set中的所有元素;
- union(other_set): 返回一个包含两个集合中所有元素的新集合;
- intersection(other_set): 返回一个包含两个集合中共有元素的新集合;
- difference(other_set): 返回一个包含只出现在第一个集合中的元素的新集合;
- symmetric_difference(other_set): 返回一个包含不同时出现在两个集合中的元素的新集合。
2. frozenset方法
2.1. 概述
frozenset是Python中的一种集合类型,它是不可变的。因此,不能像set那样对其增删元素操作。frozenset可以用序列或者可迭代对象创建,也可以通过frozenset()函数创建一个空集合。frozenset中的元素类型必须是可哈希的。
2.2. 创建frozenset
可以通过以下方式创建frozenset:
fs = frozenset([1, 2, 3])
print(fs)
# 结果:frozenset({1, 2, 3})
2.3. 常用方法
由于frozenset是不可变的,因此其常用方法只有以下几个:
- union(other_set): 返回一个包含两个集合中所有元素的新集合;
- intersection(other_set): 返回一个包含两个集合中共有元素的新集合;
- difference(other_set): 返回一个包含只出现在第一个集合中的元素的新集合;
- symmetric_difference(other_set): 返回一个包含不同时出现在两个集合中的元素的新集合。
3. 区别
set和frozenset的区别在于:
- set是可变的,frozenset是不可变的;
- set可以直接进行增删元素操作,而frozenset不行;
- set没有hash值,不能作为另一个集合的元素,而frozenset可以。
以下是一个关于set和frozenset的示例说明:
# 创建set
s = set([1, 2, 3, 4])
print(s)
# 添加元素
s.add(5)
print(s)
# 删除元素
s.remove(3)
print(s)
# 创建frozenset
fs = frozenset([1, 2, 3, 4])
print(fs)
# 将frozenset作为set的元素
s2 = set([fs])
print(s2)
输出结果:
{1, 2, 3, 4}
{1, 2, 3, 4, 5}
{1, 2, 4, 5}
frozenset({1, 2, 3, 4})
{frozenset({1, 2, 3, 4})}
以上示例说明了set和frozenset的基本操作,以及将frozenset作为set的元素。