pin_drop当前位置:知识文库 ❯ 图文
Python集合交集运算详解 - intersection方法与&运算符
概述
交集是集合论中的基本运算,返回同时属于两个集合的元素。Python 提供了 intersection() 方法和 & 运算符两种方式计算交集。交集运算在数据去重、共同好友查找等场景中非常实用。
语法
代码示例
set.intersection(other, ...)
set & other & ...
返回值:包含交集元素的新集合
基本用法
intersection 方法
代码示例
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
result = a.intersection(b)
print(result)
输出:
代码示例
{3, 4, 5}
& 运算符
代码示例
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
result = a & b
print(result)
输出:
代码示例
{3, 4, 5}
多集合交集
代码示例
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
c = {4, 5, 6, 7, 8}
result1 = a.intersection(b, c)
result2 = a & b & c
print(result1)
print(result2)
输出:
代码示例
{4, 5}
{4, 5}
intersection_update 方法
intersection_update() 原地修改集合,只保留交集元素:
代码示例
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a.intersection_update(b)
print(a)
输出:
代码示例
{3, 4, 5}
常见应用场景
共同好友
代码示例
my_friends = {"Alice", "Bob", "Charlie", "David"}
your_friends = {"Bob", "Charlie", "Eve", "Frank"}
common = my_friends & your_friends
print(f"共同好友: {common}")
输出:
代码示例
共同好友: {'Bob', 'Charlie'}
多条件筛选
代码示例
python_devs = {"Alice", "Bob", "Charlie"}
java_devs = {"Bob", "David", "Eve"}
senior_devs = {"Alice", "Bob", "Frank"}
full_stack = python_devs & java_devs & senior_devs
print(f"全栈高级: {full_stack}")
输出:
代码示例
全栈高级: {'Bob'}
注意事项
区别:
intersection()接受任何可迭代对象,&只接受集合。
不修改原集合:
intersection()返回新集合,原集合不变。
空交集:没有共同元素时返回空集合
set()。
小结
-
intersection() 和 & 计算交集
-
intersection() 接受任何可迭代对象,& 只接受集合
-
intersection_update() 原地修改,只保留交集
-
常用于查找共同元素、多条件筛选
练习题
练习1
给定三个购物清单 list1 = {"苹果", "香蕉", "牛奶"},list2 = {"牛奶", "面包", "鸡蛋"},list3 = {"牛奶", "鸡蛋", "果汁"},找出三个清单中都有的商品。
练习2
编写一个函数 common_words(text1, text2),接两个字符串,返回两个文本中共有的单词集合(忽略大小写)。
常见问题
intersection() 和 & 运算符有什么区别?
intersection() 接受任何可迭代对象,而 & 运算符只接受集合类型。使用 intersection() 更加灵活,可以直接传入列表、元组等。
intersection() 会修改原集合吗?
不会。intersection() 返回一个新的集合,原集合保持不变。如果需要原地修改,请使用 intersection_update() 方法。
如何计算三个或更多集合的交集?
可以使用 intersection() 方法传入多个参数,如 a.intersection(b, c, d);或者使用 & 运算符链式连接,如 a & b & c & d。
两个集合没有共同元素时交集是什么?
当两个集合没有共同元素时,intersection() 返回空集合 set(),而不是 None 或报错。
本文涉及AI创作
内容由AI创作,请仔细甄别