Python集合基于哈希表,支持O(1)交集(&/intersection)、并集(|/union)、差集(-/difference)、对称差集(^/symmetric_difference)及去重操作,但元素须可哈希且不保持顺序。
Python集合(set)是处理无序、唯一元素的利器,尤其适合做交集、并集、差集和去重操作。它底层基于哈希表,查找和运算平均时间复杂度为 O(1),比用列表手动遍历高效得多。
用 & 符号或 .intersection() 方法获取两个或多个集合共有的元素。注意:结果仍是 set 类型,若需列表可转成 list。
common = set_a & set_b & set_c
common = set_a.intersection(set_b, set_c, set_d)
用 | 或 .union() 把多个集合“拼起来”,自动去重。常用于汇总不同来源的数据标签、用户ID等。
all_items = set_a | set_b
total = set_a.union(set_b, set_c, *list_of_sets)
用 - 或 .difference() 得到在第一个集合中存在、但不在后续集合中出现的元素。典型场景如:找出新用户里未注册老系统的人、筛选出尚未处理的任务ID。
only_in_a = set_a -
set_b
unique_to_a = set_a - set_b - set_c 等价于 set_a.difference(set_b, set_c)
把任意可迭代对象转为 set 是最常用的去重方式,但要注意:原始顺序会丢失,且元素必须是可哈希的(如不能含字典或列表)。
unique_list = list(set(original_list))
list(dict.fromkeys(original_list))