MEMOO
MEMOO
Published on 2025-04-19 / 2 Visits
0
0

Python集合差集运算

摘要:在本节中,你将了解 Python 集合的差集,以及如何使用它来找出两个或多个集合之间的差异。

Python 集合差集简介

两个 集合 的差集会得到一个新的集合,该集合包含来自第一个集合但不存在于第二个集合中的元素。

假设你有以下集合 s1s2

s1 = {'Python', 'Java', 'C++'}

s2 = {'C#', 'Java', 'C++'}

集合 s1 和集合 s2 的差集得到了下面这个只包含一个元素的集合:

{'Python'}

……因为在第一个集合中只Python这个元素不存在于第二个集合中。

集合的差集不满足交换律。集合 s2 和集合 s1 的差集得到的是下面这个集合:

{'C#'}

下面的维恩图展示了集合 s1 和集合 s2 之间的差集情况:

并且下面的维恩图展示了集合 s2 和集合 s1 之间的差集情况:

在 Python 中,你可以使用集合difference()方法或集合差集运算符(-)来找出集合之间的差异。

1)使用 Python 集合difference()方法来找出集合之间的差异

集合(Set)类型有一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()方法会返回一个新的集合。它不会改变原始的集合。

2)使用 Python 集合差集运算符(-)来找出集合之间的差异

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#'}

集合difference()方法与集合差集运算符(-)的对比

集合difference()方法可以接受一个或多个可迭代对象(例如:字符串列表字典),而集合差集运算符(-)只允许操作数是集合。

当你将可迭代对象传递给集合difference()方法时,在执行差集操作之前,它会先将这些可迭代对象转换为集合。

下面展示了如何对一个列表使用集合difference()方法:

scores = {7, 8, 9}

numbers = [9, 10]

new_scores = scores.difference(numbers)

print(new_scores)

然而,如果你对可迭代对象使用集合差集运算符(-),你将会得到一个错误:

scores = {7, 8, 9}

numbers = [9, 10]

new_scores = scores - numbers

print(new_scores)

错误:

TypeError: unsupported operand type(s) for -: 'set' and 'list'

总结

  • 两个集合的差集会得到一个新的集合,该集合包含第一个集合中存在但第二个集合中不存在的元素。

  • 使用集合difference()方法或集合差集运算符(-)来找出集合之间的差异。


Comment