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}
常见应用场景
找出独有元素
代码示例
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 - b和b - 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。
本文涉及AI创作
内容由AI创作,请仔细甄别