pin_drop当前位置:知识文库 ❯ 图文

Python集合差集运算详解 - difference方法与-运算符

概述

差集返回属于第一个集合但不属于第二个集合的元素。Python 提供了 difference() 方法和 - 运算符两种方式计算差集。差集运算在"我有但对方没有"的场景中非常实用。


语法

代码示例

set.difference(other, ...)
set - other - ...

返回值:包含差集元素的新集合


基本用法

difference 方法

代码示例

a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
result = a.difference(b)
print(result)

输出:

代码示例

{1, 2}

- 运算符

代码示例

a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
result = a - b
print(result)

输出:

代码示例

{1, 2}

多集合差集

代码示例

a = {1, 2, 3, 4, 5}
b = {3, 4}
c = {5, 6}
result = a.difference(b, c)
print(result)

输出:

代码示例

{1, 2}

difference_update 方法

代码示例

a = {1, 2, 3, 4, 5}
b = {3, 4, 5}
a.difference_update(b)
print(a)

输出:

代码示例

{1, 2}
方法 修改方式 返回值
difference() 创建新集合 新集合
difference_update() 原地修改 None

常见应用场景

找出独有元素

代码示例

my_skills = {"Python", "Java", "Go", "Rust"}
required = {"Python", "Go", "C++"}
missing = required - my_skills
extra = my_skills - required
print(f"缺少技能: {missing}")
print(f"额外技能: {extra}")

输出:

代码示例

缺少技能: {'C++'}
额外技能: {'Java', 'Rust'}

待办事项管理

代码示例

all_tasks = {"写报告", "开会", "写代码", "测试"}
completed = {"开会", "写代码"}
remaining = all_tasks - completed
print(f"待完成: {remaining}")

注意事项

顺序敏感a - bb - a 结果不同,差集不满足交换律。

difference 与 - 区别difference() 接受任何可迭代对象,- 只接受集合。

不修改原集合difference() 返回新集合。


小结

  • difference()- 计算差集

  • 差集不满足交换律a - b ≠ b - a

  • difference_update() 原地修改

  • 常用于找出独有元素、待办管理


练习题

练习1

给定两个用户权限集合 admin = {"read", "write", "delete", "manage"}user = {"read", "write"},使用差集找出管理员独有的权限。

练习2

编写一个函数 unique_to_first(*sets),返回只在第一个集合中出现、不在其他任何集合中出现的元素。

常见问题

difference() 和 - 运算符有什么区别?

difference() 接受任何可迭代对象,而 - 运算符只接受集合类型。使用 difference() 更加灵活,可以直接传入列表、元组等。

a - b 和 b - a 的结果一样吗?

不一样。差集不满足交换律,a - b 返回属于 a 但不属于 b 的元素,而 b - a 返回属于 b 但不属于 a 的元素。

difference() 会修改原集合吗?

不会。difference() 返回一个新的集合,原集合保持不变。如果需要原地修改,请使用 difference_update() 方法。

如何计算多个集合的差集?

可以使用 difference() 方法传入多个参数,如 a.difference(b, c, d),会依次从 a 中移除 b、c、d 中的元素;或者使用 - 运算符链式连接,如 a - b - c - d。

标签: Python 集合运算 差集 difference 独有元素 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python集合并集运算详解 - union方法与|运算符 下一篇: Python集合对称差集详解 - symmetric_difference与^运算符

poll相关推荐