Python中集合Set怎么用
发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,这篇文章给大家分享的是有关Python中集合Set怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在数学中,对集合的严格定义可能是抽象的且难以掌握。但实际上可以将集合简
千家信息网最后更新 2026年11月05日Python中集合Set怎么用
这篇文章给大家分享的是有关Python中集合Set怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
在数学中,对集合的严格定义可能是抽象的且难以掌握。但实际上可以将集合简单地认为是定义明确的不同对象的集合,通常称为元素或成员。
Python 提供了一个内置的集合类型来将对象分组到一个集合中。集合与其他对象类型的区别在于可以对执行的独特操作。

定义一个集合
集合是无序的,并且元素是唯一的,集合本身可以修改,但集合中包含的元素必须是不可变类型。
构建集合的方式
# 构建的set数据会自动进行去重x = set()# list方式>>> x = set(['foo', 'bar', 'baz', 'foo', 'qux'])>>> x{'qux', 'foo', 'bar', 'baz'}# tuple方式>>> x = set(('foo', 'bar', 'baz', 'foo', 'qux'))>>> x{'qux', 'foo', 'bar', 'baz'}# 字符串方式>>> s = 'quux'>>> list(s)['q', 'u', 'u', 'x']>>> set(s){'x', 'u', 'q'}
集合元素set后自动排序并且元素必须是不可变的。
>>> x = {42, 'foo', (1, 2, 3), 3.14159}>>> x{42, 'foo', 3.14159, (1, 2, 3)}# list和dict不能被set>>> a = [1, 2, 3]>>> {a}Traceback (most recent call last): File "", line 1, in {a}TypeError: unhashable type: 'list'>>> d = {'a': 1, 'b': 2}>>> {d}Traceback (most recent call last): File "", line 1, in {d}TypeError: unhashable type: 'dict' 集合的大小和成员资格
方法 len() 、in 、 not in 的应用。
>>> x = {'foo', 'bar', 'baz'}>>> len(x)3>>> 'bar' in xTrue>>> 'qux' in xFalse集合的9种操作

计算集合并集
# x1.union(x2[, x3 ...])# x1 | x2 [| x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'baz', 'qux', 'quux'}>>> x1 | x2{'baz', 'quux', 'qux', 'bar', 'foo'}>>> x1.union(x2){'baz', 'quux', 'qux', 'bar', 'foo'}# 更多的集合并集操作>>> a = {1, 2, 3, 4}>>> b = {2, 3, 4, 5}>>> c = {3, 4, 5, 6}>>> d = {4, 5, 6, 7}>>> a.union(b, c, d){1, 2, 3, 4, 5, 6, 7}>>> a | b | c | d{1, 2, 3, 4, 5, 6, 7}计算集合交集
# x1.intersection(x2[, x3 ...])# x1 & x2 [& x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'baz', 'qux', 'quux'}>>> x1.intersection(x2){'baz'}>>> x1 & x2{'baz'}# 更多的集合交集操作>>> a = {1, 2, 3, 4}>>> b = {2, 3, 4, 5}>>> c = {3, 4, 5, 6}>>> d = {4, 5, 6, 7}>>> a.intersection(b, c, d){4}>>> a & b & c & d{4}计算集合之间差异
# x1.difference(x2[, x3 ...])# x1 - x2 [- x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'baz', 'qux', 'quux'}>>> x1.difference(x2){'foo', 'bar'}>>> x1 - x2{'foo', 'bar'}# 更多的集合差异操作>>> a = {1, 2, 3, 30, 300}>>> b = {10, 20, 30, 40}>>> c = {100, 200, 300, 400}>>> a.difference(b, c){1, 2, 3}>>> a - b - c{1, 2, 3}计算集合间对称差
# x1.symmetric_difference(x2)# x1 ^ x2 [^ x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'baz', 'qux', 'quux'}>>> x1.symmetric_difference(x2){'foo', 'qux', 'quux', 'bar'}>>> x1 ^ x2{'foo', 'qux', 'quux', 'bar'}# 更多的集合对称差操作>>> a = {1, 2, 3, 4, 5}>>> b = {10, 2, 3, 4, 50}>>> c = {1, 50, 100}>>> a ^ b ^ c{100, 5, 10}计算后集合中是否有包含前集合的元素
# x1.isdisjoint(x2)>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'baz', 'qux', 'quux'}>>> x1.isdisjoint(x2)False>>> x2 - {'baz'}{'quux', 'qux'}>>> x1.isdisjoint(x2 - {'baz'})True# x1.isdisjoint(x2)是True,那么x1 & x2是空集>>> x1 = {1, 3, 5}>>> x2 = {2, 4, 6}>>> x1.isdisjoint(x2)True>>> x1 & x2set()计算一个集合是否是另一个集合的子集
# x1.issubset(x2)# x1 <= x2>>> x1 = {'foo', 'bar', 'baz'}>>> x1.issubset({'foo', 'bar', 'baz', 'qux', 'quux'})True>>> x2 = {'baz', 'qux', 'quux'}>>> x1 <= x2False# 一个集合被认为是它自身的一个子集>>> x = {1, 2, 3, 4, 5}>>> x.issubset(x)True>>> x <= xTrue计算一个集合是否是另一个集合的真子集
# x1 < x2>>> x1 = {'foo', 'bar'}>>> x2 = {'foo', 'bar', 'baz'}>>> x1 < x2True>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'bar', 'baz'}>>> x1 < x2False# 子集与真子集的判断>>> x = {1, 2, 3, 4, 5}>>> x <= xTrue>>> x < xFalse计算一个集合是否是另一个集合的超集
# x1.issuperset(x2)# x1 >= x2>>> x1 = {'foo', 'bar', 'baz'}>>> x1.issuperset({'foo', 'bar'})True>>> x2 = {'baz', 'qux', 'quux'}>>> x1 >= x2False# 集合被认为是本身的一个子集,默认为自身超集>>> x = {1, 2, 3, 4, 5}>>> x.issuperset(x)True>>> x >= xTrue计算一个集合是否是另一个集合的正确超集
# x1 > x2>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'bar'}>>> x1 > x2True>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'bar', 'baz'}>>> x1 > x2False# 集合不是其自身的正确超集>>> x = {1, 2, 3, 4, 5}>>> x > xFalse集合的9种修改
尽管集合中包含的元素必须是不可变类型,但集合本身可以修改。
update计算并集
# x1.update(x2[, x3 ...])# x1 |= x2 [| x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'baz', 'qux'}>>> x1 |= x2>>> x1{'qux', 'foo', 'bar', 'baz'}>>> x1.update(['corge', 'garply'])>>> x1{'qux', 'corge', 'garply', 'foo', 'bar', 'baz'}intersection_update 计算交集
# x1.intersection_update(x2[, x3 ...])# x1 &= x2 [& x3 ...]>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'baz', 'qux'}>>> x1 &= x2>>> x1{'foo', 'baz'}>>> x1.intersection_update(['baz', 'qux'])>>> x1{'baz'}difference_update 按差异修改被处理集合
>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'baz', 'qux'}>>> x1 -= x2>>> x1{'bar'}>>> x1.difference_update(['foo', 'bar', 'qux'])>>> x1set()symmetric_difference_update 按对称差修改被处理集合
# x1.symmetric_difference_update(x2)# x1 ^= x2>>> x1 = {'foo', 'bar', 'baz'}>>> x2 = {'foo', 'baz', 'qux'}>>> x1 ^= x2>>> x1{'bar', 'qux'}>>> >>> x1.symmetric_difference_update(['qux', 'corge'])>>> x1{'bar', 'corge'}add 元素添加到集合中
>>> x = {'foo', 'bar', 'baz'}>>> x.add('qux')>>> x{'bar', 'baz', 'foo', 'qux'}remove 集合中移除一个元素
>>> x = {'foo', 'bar', 'baz'}>>> x.remove('baz')>>> x{'bar', 'foo'}# 如果元素步存在则引发异常>>> x.remove('qux')Traceback (most recent call last): File "", line 1, in x.remove('qux')KeyError: 'qux' discard 集合中移除一个元素
>>> x = {'foo', 'bar', 'baz'}>>> x.discard('baz')>>> x{'bar', 'foo'}>>> x.discard('qux')>>> x{'bar', 'foo'}pop 集合中移除一个随机元素
>>> x = {'foo', 'bar', 'baz'}>>> x.pop()'bar'>>> x{'baz', 'foo'}>>> x.pop()'baz'>>> x{'foo'}>>> x.pop()'foo'>>> xset()>>> x.pop()Traceback (most recent call last): File "", line 1, in x.pop()KeyError: 'pop from an empty set' clear 清空集合
>>> x = {'foo', 'bar', 'baz'}>>> x{'foo', 'bar', 'baz'}>>> >>> x.clear()>>> xset()被冻结集合
freezeset 为 Python的内置类型,不可变、不可操作。
>>> x = frozenset(['foo', 'bar', 'baz'])>>> xfrozenset({'foo', 'baz', 'bar'})>>> len(x)3>>> x & {'baz', 'qux', 'quux'}frozenset({'baz'})尝试修改 freezeset 的方法会失败
>>> x = frozenset(['foo', 'bar', 'baz'])>>> x.add('qux')Traceback (most recent call last): File "", line 1, in x.add('qux')AttributeError: 'frozenset' object has no attribute 'add'>>> x.pop()Traceback (most recent call last): File "", line 1, in x.pop()AttributeError: 'frozenset' object has no attribute 'pop'>>> x.clear()Traceback (most recent call last): File "", line 1, in x.clear()AttributeError: 'frozenset' object has no attribute 'clear'>>> xfrozenset({'foo', 'bar', 'baz'}) 感谢各位的阅读!关于"Python中集合Set怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
元素
更多
类型
方式
超集
可变
对称
交集
子集
对象
差异
中集
内容
成员
方法
篇文章
中包
处理
不同
不错
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技
互联网科技公司华为
互联网品科技
工业互联网科技新基建
一五八零互联网科技
互联网公司会议桌创意科技软装饰
青海省互联网新科技
天速互联网络科技有限公司
湖南诚度互联网科技有限公司
厦门比较好的科技互联网公司
晓花互联网科技有限公司网址
成都互联网科技公司工作好不好
坤平互联网科技
工业互联网展湾科技股份有限公司
互联网金融科技元年
广州百诚互联网科技有限公司官网
风投北京互联网科技
福建互联网展示科技馆设计
求路客互联网科技电话
绵阳真晨互联网科技有限公司
咖啡豆
今日互联网科技
郑州华宇互联网科技
互联网 新科技
中国科技互联网公司收入
西安小鹰速贷互联网科技有限公司
明优互联网科技有限公司
江苏互联网智能科技产品出厂价
第三届互联网大会安防黑科技
科技互联网企业在行动