Python Set集合详解:创建、操作与不可变类型

Alice
Alice
发布时间:2026-10-12| 2人浏览过
原创

本文详细介绍Python中set集合的定义、创建方式及常用操作方法。涵盖add、remove、pop等元素管理函数,以及difference、intersection、union等集合运算方法。同时讲解frozenset不可变集合的特性,帮助开发者掌握集合在去重和数学运算中的应用。

一、set 集合

集合(set)是Python内置的一种无序且不包含重复元素的数据序列。

可以通过大括号 {} 或 set() 函数来创建集合。需要注意的是,若要创建一个空集合,必须使用 set(),因为 { } 在Python中用于创建空字典。

二、创建集合

print({"1", "2", "3"})  # {'2', '3', '1'}
print(set("123"))  # {'2', '3', '1'}
print(set((1, 2, 3)))  # {1, 2, 3}
print(set([11,22,33]))  # {33, 11, 22}

add

用于向集合中添加单个元素。

s1 = {"1", "2", "3"}
s1.add("4")
print(s1)  # {'1', '4', '3', '2'}
s1.add("abc")
print(s1)  # {'abc', '1', '4', '2', '3'}

clear

用于清空集合中的所有元素,使集合变为空集合。

s1 = {"1", "2", "3"}
s1.clear()
print(s1)  # set()

discard

从集合中移除指定的元素。如果该元素不存在于集合中,则不执行任何操作且不会报错。

s1 = {"1", "2", "3"}
print(s1.discard("4"))  # None
print(s1)  # {'2', '1', '3'}
print(s1.discard("1"))  # None
print(s1)  # {'2', '3'}

remove

用于移除集合中指定的元素。若指定元素不存在,则会抛出 KeyError 异常。

s1 = {"a", "c", "3"}
s1.remove("a")
print(s1)  # {'3', 'c'}

pop

随机返回并移除集合中的一个元素。如果集合为空,则抛出 KeyError 异常。

s1 = {"a", "c", "3"}
print(s1.pop())  # 3

update

使用另一个集合的元素更新当前集合,即取两个集合的并集并更新到自身。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.update(s2)
print(s1)  # {'1', 'c', 'a', '3', '2'}

copy

对集合进行浅拷贝,返回一个与原集合内容相同的新集合。

s1 = {"1", "2", "3"}
s2 = s1.copy()
print(s2)  # {'2', '1', '3'}

difference

计算差集,返回存在于当前集合但不存在于另一个集合中的元素,原集合保持不变。

s1 = {"1", "2", "3"}
s2 = {"1", "2", "4"}
print(s1.difference(s2))  # {'3'}
print("差集:", s1-s2)  # 差集: {'3'}

difference_update

从当前集合中移除与另一个集合共有的元素,即更新当前集合为差集。

s1 = {"1", "2", "3"}
s2 = {"1", "2", "4"}
s1.difference_update(s2)
print(s1)  # {'3'}

intersection

计算交集,返回两个集合中共有的元素。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.intersection(s2)
print(s3)
print("交集:", s1 & s2)  # {'2'}

intersection_update

根据与另一个集合的交集来更新当前集合,移除不在交集中的元素。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.intersection_update(s2)
print(s1)  # {'2'}

isdisjoint

判断两个集合是否没有共同元素。如果交集为空,返回 True,否则返回 False。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = {"a", "b", "c"}
print(s1.isdisjoint(s2))  # False
print(s1.isdisjoint(s3))  # True

issubset

判断当前集合是否为另一个集合的子集。

s1 = {"a", "c", "3"}
s2 = {"a", "c"}
print(s1.issubset(s2))  # False
print(s2.issubset(s1))  # True

issuperset

判断当前集合是否包含另一个集合的所有元素,即是否为另一个集合的超集。

s1 = {"a", "c", "3"}
s2 = {"a", "c"}
print(s1.issuperset(s2))  # True
print(s2.issuperset(s1))  # False

symmetric_difference

计算对称差集,返回两个集合中不共有的元素合集(即只属于其中一个集合的元素)。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.symmetric_difference(s2)
print(s3)  # {'1', 'a', 'c', '3'}
print("交叉补集:", s1 ^ s2)  # {'1', 'c', '3', 'a'}

symmetric_difference_update

计算两个集合的对称差集,并用结果更新当前集合。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.symmetric_difference_update(s2)
print(s1)  # {'a', '3', 'c', '1'}

union

计算合集,返回包含两个集合所有元素的集合。

s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.union(s2)
print(s3)  # {'a', '1', 'c', '3', '2'}
print("合集:", s1 | s2)  # {'3', '2', 'c', '1', 'a'}

不可变集合 frozenset

fs = frozenset("python")
print(fs)  # frozenset({'o', 'n', 'y', 'h', 'p', 't'})

到此这篇关于python基础之set集合详解的文章就介绍到这了,更多相关python的set集合内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。