如何对比Python元组内容,提取仅存在于指定元组的元素
提取仅存在于deactivated元组中的元素
方法思路
元组(以及示例中的整数、字符串元素)都是可哈希类型,利用集合的快速查找特性可以高效完成元素筛选:
- 先把
schedules转成集合,减少元素存在性判断的时间成本 - 遍历
deactivated的每个元素,筛选出不在schedules集合内的项 - 最后将筛选结果转为元组,赋值给
to_deactivate
完整代码实现
deactivated = ((34, 'abcd'), (250, 'def'), (350, 'xyz')) schedules = ((34, 'abcd'), (250, 'def')) # 转换为集合提升查找效率 schedules_set = set(schedules) # 筛选目标元素并转为元组 to_deactivate = tuple(item for item in deactivated if item not in schedules_set) print(to_deactivate) # 输出结果: ((350, 'xyz'),)
额外说明
如果你的元组内部包含不可哈希元素(比如列表),集合方法就不适用了,此时需要改用逐个元素对比的方式,但示例场景完全可以用上述方法处理。另外也可以直接写to_deactivate = tuple(item for item in deactivated if item not in schedules),但这种方式每次判断都要遍历整个schedules元组,数据量大时效率不如集合方法。
内容的提问来源于stack exchange,提问作者Milind Sahu
相关产品推荐
相关产品推荐

