

新闻资讯
技术学院Python集合的核心原理是无序、唯一、可变(元素必须不可变);底层基于哈希表,要求元素可哈希且不可变,故列表和字典不可作为元素;集合运算利用哈希O(1)查找,效率远高于列表。
Python集合(set)的核心原理其实就三点:无序、唯一、可变(但元素必须不可变)。理解这三点,再结合实际操作,集合用起来就非常顺手。本讲不堆概念,直接拆解底层逻辑和典型场景。
因为集合的底层是哈希表,要求每个元素能被“哈希”——也就是有确定且不变的 hash 值。列表、字典是可变对象,内容变了 hash 就可能变,破坏哈希表结构。所以 Python 直接禁止这样做:
—— 列表和字典无法哈希交集(&)、并集(|)、差集(-)这些操作不是逐个比对,而是利用哈希 O(1) 查找特性批量处理。比如 s1 & s2 实际是遍历较短的那个集合,对每个元素在另一个集合中做哈希查找——平均时间复杂度接近 O(min(len(s1), len(s2)))。
set(list_data) 快速去重,比用循环+if判断高效得多不是所有“去重”都该用 set,也不是所有“存在性判断”都靠 in。看这几个贴近开发的案例:
user_roles = {"admin", "editor"},检查权限时直接 "publish" in allowed_roles,比列表快且语义清晰seen = set() 缓存已处理项,避免重复入库prod_set - test_set 一眼看出多开了哪些功能集合不是炫技工具,而是解决“唯一性”和“成员关系”问题的最优解之一。用对时机,代码更简、性能更好、意图更明。