Python入门教程第47篇 集合的差集
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第47篇 集合的差集相关的知识,希望对你有一定的参考价值。
本篇我们学习集合的差集操作,它可以返回两个或多个集合的差异。
集合的差集
两个集合的差集包含了第一个集合中存在,但第二个集合中不存在的所有元素。
以下是集合 s1 和 s2:
s1 = 'Python', 'Java', 'C++'
s2 = 'C#', 'Java', 'C++'
s1 和 s2 的差集结果只有一个元素:
'Python'
因为“Python”属于第一个集合,但不属于第二个集合。
集合的差集不具有可交换性,s2 和 s1 的差集如下:
'C#'
以下文氏图解释了集合 s1 和 s2 的差集:
同理,以下文氏图解释了集合 s2 和 s1 的差集:
在 Python 中,我们可以使用集合的 difference() 方法或者交集操作符(-)返回两个或多个集合的差集。
difference() 方法
集合类型的 difference() 方法可以返回两个或多个集合的差集:
set1.difference(s2, s3, ...)
例如,以下示例使用 difference() 方法查找集合 s1 和 s2 的差集:
s1 = 'Python', 'Java', 'C++'
s2 = 'C#', 'Java', 'C++'
s = s1.difference(s2)
print(s)
输出结果如下:
'Python'
下面的示例同样使用 difference() 方法返回集合 s2 和 s1 的差集:
s1 = 'Python', 'Java', 'C++'
s2 = 'C#', 'Java', 'C++'
s = s2.difference(s1)
print(s)
输出结果如下:
'C#'
difference() 方法返回了一个新的集合,不会修改原始集合。
差集操作符
除了 difference() 方法之外,Python 还提供了差集操作符(-),也可以用于获取多个集合的差集。
s = s1 - s2
以下示例使用差集操作符查找集合 s1 和 s2 的差集:
s1 = 'Python', 'Java', 'C++'
s2 = 'C#', 'Java', 'C++'
s = s1 - s2
print(s)
下面的示例使用差集操作符获取集合 s2 和 s1 的差集:
s1 = 'Python', 'Java', 'C++'
s2 = 'C#', 'Java', 'C++'
s = s2 - s1
print(s)
输出结果如下:
'C#'
以下示例返回了多个集合的对称差集:
s1 = 1, 2, 3
s2 = 2, 3, 4
s2 = 3, 4, 5
s = s1 - s2 - s3
print(s)
输出结果如下:
```python
1
两种方法比较
集合的 difference() 方法可以支持一个或多个可遍历对象(例如字符串、列表、字典等),但是差集操作符只支持集合类型。
当我们将可遍历对象传递给 difference() 方法,它会将其转换为集合之后再执行差集操作。以下示例使用 difference() 方法获取一个集合与一个列表的差集:
scores = 7, 8, 9
numbers = [9, 10]
new_scores = scores.difference(numbers)
print(new_scores)
如果我们将以上示例中的 difference() 方法替换为差集操作符,将会返回一个错误:
scores = 7, 8, 9
numbers = [9, 10]
new_scores = scores - numbers
print(new_scores)
TypeError: unsupported operand type(s) for -: 'set' and 'list'
总价
- 两个集合的差集包含了第一个集合中存在,但是第二个集合中不存在的所有元素。
- 集合的 difference() 方法和差集操作符(-)都可以用于查找多个集合的差集。
以上是关于Python入门教程第47篇 集合的差集的主要内容,如果未能解决你的问题,请参考以下文章