Python中set与frozenset方法和区别详解
1. set方法
在Python中set是一种可变的集合类型,用大括号{}括起来,集合中的元素是无序的且不允许重复。set中的元素必须是不可变的数据类型(如字符串、数字等)。
创建set
我们可以使用以下几种方式来创建set:
- 直接使用花括号{}创建
- 使用内置函数set()创建
如下所示:
# 直接使用花括号{}创建set
my_set = {1, 2, 3, "hello", "world"}
print(my_set)
# 使用内置函数set()创建set
my_set = set([1, 2, 3, "hello", "world"])
print(my_set)
运行结果:
{1, 2, 3, 'hello', 'world'}
{1, 2, 3, 'hello', 'world'}
添加元素
我们可以使用add()方法向set中添加元素,如下所示:
my_set = {1, 2, 3, "hello", "world"}
# 向set中添加元素
my_set.add("Python")
print(my_set)
运行结果:
{1, 2, 3, 'world', 'Python', 'hello'}
删除元素
我们可以使用remove()方法来删除set中的元素,如果元素不存在则抛出KeyError异常,如下所示:
my_set = {1, 2, 3, "hello", "world"}
# 删除元素
my_set.remove(3)
print(my_set)
# 删除不存在的元素,抛出KeyError异常
my_set.remove(4)
运行结果:
{1, 2, 'world', 'hello'}
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
KeyError: 4
2. frozenset方法
在Python中frozenset是一种不可变的集合类型,它的特点与set一样,但是frozenset中的元素是不可变的,因此可以作为字典的key。
创建frozenset
我们可以使用内置函数frozenset()来创建frozenset,如下所示:
# 使用内置函数frozenset()创建frozenset
my_frozenset = frozenset([1, 2, 3, "hello", "world"])
print(my_frozenset)
运行结果:
frozenset({1, 2, 3, 'world', 'hello'})
添加元素
由于frozenset是不可变的,因此无法使用add()方法来添加元素。
删除元素
由于frozenset是不可变的,因此无法使用remove()方法来删除元素。
区别
set和frozenset的主要区别在于set是可变的,frozenset是不可变的。因此我们可以通过add()和remove()方法来修改set,但是无法修改frozenset。而frozenset可以作为字典的key,set不可以。
示例1:
# set作为字典的键
my_set = {1, 2, 3}
my_dict = {my_set: "hello"}
print(my_dict)
# frozenset作为字典的键
my_frozenset = frozenset([1, 2, 3])
my_dict = {my_frozenset: "world"}
print(my_dict)
运行结果:
{{1, 2, 3}: 'hello'}
{frozenset({1, 2, 3}): 'world'}
示例2:
# set可以使用add()方法添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
# frozenset无法使用add()方法添加元素
my_frozenset = frozenset([1, 2, 3])
my_frozenset.add(4)
运行结果:
{1, 2, 3, 4}
Traceback (most recent call last):
File "<stdin>", line 6, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中set与frozenset方法和区别详解 - Python技术站