Python集合操作全解析:定义、关系测试与增删改查
本文详细解析Python中集合(set)的核心特性与操作方法。集合是一种无序且不重复的数据组合,主要用于数据去重及集合间的关系测试。文章系统介绍了集合的定义语法,深入讲解了交集、并集、差集、对称差集等关系运算及其对应的函数与运算符写法,并涵盖了add、update、remove、pop、discard等增删改查函数的具体用法与注意事项,帮助开发者高效掌握集合操作。
集合(Set)是Python中一种无序且元素唯一的数据结构,它天然具备去重特性。集合的主要应用场景包括对列表等序列进行去重处理,以及执行两组数据之间的交集、并集和差集等关系测试。
- 首要功能是去重:通过将列表转换为集合,可以自动去除重复元素,实现数据清洗。
- 其次是关系测试:用于分析两组集合之间的逻辑关系,如求取交集、并集和差集等。
一、集合常用方法总结

二、定义
1、语法
>>> name_1 = [1,2,3,4,7,8,7,10]
#把列表转换为集合
>>> name_1 = set(name_1)
#转换后,去重
>>> print(name_1,type(name_1))
{1, 2, 3, 4, 7, 8, 10} <class 'set'>
三、关系测试
1、交集(intersection())
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.intersection(name_2)
{8, 1, 10, 3}
2、并集(union())
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.union(name_2)
{1, 2, 3, 4, 5, 7, 8, 10}
3、差集(difference())
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.difference(name_2)
{2, 4, 7}
特别提示:差集运算获取的是存在于第一个集合中但不存在于第二个集合中的元素(即“在我不在你”)。
4、issubset()
用于判断一个集合是否为另一个集合的子集。
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #输出结果 >>> name_3.issubset(name_1) True
5、issuperset()
用于判断一个集合是否为另一个集合的父集(超集)。
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #输出结果 >>> name_1.issuperset(name_3) True
6、对称差集(symmetric_difference())
用于提取两个集合中不重叠的元素,即只属于其中一个集合的元素。
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.symmetric_difference(name_2)
{2, 4, 5, 7}
7、isdisjoint()
用于判断两个集合是否没有交集;若确实无交集,则返回True。
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_3 = [11] >>> name_1 = set(name_1) >>> name_2 = set(name_2) >>> name_3 = set(name_3) #有交集 >>> name_1.isdisjoint(name_2) False #无交集 >>> name_1.isdisjoint(name_3) True
1、交集(&)
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 & name_2
{8, 1, 10, 3}
2、并集(|)
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 | name_2
{1, 2, 3, 4, 5, 7, 8, 10}
3、差集(-)
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 - name_2
{2, 4, 7}
4、对称差集(^)
>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出
>>> name_1 ^ name_2
{2, 4, 5, 7}
5、是否是子集(<=)
>>> name_1 = [1,2,3,4,7,8,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #输出 >>> name_3 <= name_1 True
6、是否是父集(>=)
>>> name_1 = [1,2,3,4,7,8,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #输出 >>> name_1 >= name_3 True
1、添加(add())
>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
#添加已存在,不报错
>>> name_2.add(1)
>>> name_2
{8, 1, 10, 3, 5}
#添加不存在,添加一个新的数值
>>> name_2.add(11)
>>> name_2
{1, 3, 5, 8, 10, 11}
2、添加多项(update())
>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2.update([12,13,14])
#输出结果
>>> name_2
{1, 3, 5, 8, 10, 12, 13, 14}
3、删除(remove(),pop(),discard())
①remove()
>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2
{8, 1, 10, 3, 5}
>>> name_2.remove(1)
#输出
>>> name_2
{8, 10, 3, 5}
#删除不存在的元素,会报错
>>> name_2.remove(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
特别提示:使用remove()删除元素时,若该元素不存在,程序会抛出错误。
②pop()
>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2
{8, 1, 10, 3, 5}
#输出
>>> name_2.pop()
8
特别提示:pop()会随机删除集合中的某个元素,并返回该被删除的元素值。
③discard()
>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2.discard(10)
#输出结果
>>> name_2
{8, 1, 3, 5}
#删除不存在元素,不报错
>>> name_2.discard(10)
特别提示:使用discard()删除不存在的元素时,不会报错,程序继续执行。
4、长度(len())
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #结果输出 >>> len(name_1) 7
5、x in s
用于测试元素x是否属于集合s的成员。
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #结果输出 >>> 1 in name_1 True
6、x not in s
用于测试元素x是否不属于集合s的成员。
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #输出 >>> 12 not in name_1 True
更多关于Python集合操作方法可查看下面的相关链接
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













