python集合类型 (Set Types)

简介: 【8月更文挑战第3天】

image.png
Python 中的集合(Set Types)是一种无序的、不包含重复元素的数据结构。集合主要用于数学上的集合操作,如并集、交集、差集和对称差集等。Python 提供了两种标准的集合类型:set 和 frozenset。

  1. set
    set 是一个可变的数据类型,意味着你可以添加或删除集合中的元素。创建 set 的方式很简单,只需要将一组元素放在大括号 {} 中,或使用 set() 函数。注意,空的大括号 {} 用来创建空字典,而不是空集合;要创建空集合,必须使用 set()。

示例
python

使用大括号创建集合

my_set = {1, 2, 3, 4, 5}

使用 set() 函数创建集合

another_set = set([1, 2, 3, 4, 5])

空集合的创建

empty_set = set()

添加元素

my_set.add(6)

删除元素

my_set.remove(2) # 如果元素不存在,则抛出 KeyError

或者使用 discard 方法,如果不存在元素,则不抛出异常

my_set.discard(7)

集合的运算

union = my_set | another_set # 并集
intersection = my_set & another_set # 交集
difference = my_set - another_set # 差集
symmetric_difference = my_set ^ another_set # 对称差集

print(union)
print(intersection)
print(difference)
print(symmetric_difference)

  1. frozenset
    frozenset 是一个不可变的数据类型,意味着一旦创建,你就不能添加或删除元素。frozenset 主要用于需要不可变集合的场景,比如作为字典的键或集合的元素。

示例
python

创建一个 frozenset

my_frozenset = frozenset([1, 2, 3, 4, 5])

尝试修改 frozenset 会抛出 TypeError

my_frozenset.add(6) # 这会抛出 TypeError

frozenset 同样支持集合运算

another_frozenset = frozenset([4, 5, 6, 7, 8])
union = my_frozenset | another_frozenset
intersection = my_frozenset & another_frozenset

print(union)
print(intersection)
集合的特点
无序性:集合中的元素是无序的,即集合中的元素没有固定的顺序。
唯一性:集合中的元素是唯一的,即集合中不会出现重复的元素。
集合运算:支持多种集合运算,如并集、交集、差集和对称差集等。
集合类型在 Python 中非常有用,特别是在处理数学上的集合运算或需要快速检查元素是否存在于某个集合中时。

目录
相关文章
|
20天前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
13天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
11天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
12天前
|
Python
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
10 2
|
13天前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
20天前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
11天前
|
Python
|
12天前
|
Python
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
20 0
|
16天前
|
Python
Python 中的不同类型继承
【8月更文挑战第24天】
35 0
|
17天前
|
程序员 Python
Python 中不同类型的控制流语句
【8月更文挑战第23天】
8 0
下一篇
DDNS