Python集合底层用开放寻址哈希表,元素须可哈希(不可变),如list不可用;difference()比-更灵活,支持任意可迭代对象;update()批量插入优于多次add();自定义类需保证hash与eq一致。
set 的底层不是哈希表数组 + 链表,而是开放寻址法的哈希表(Python 3.11+ 进一步优化为紧凑结构),这意味着它不支持稳定遍历顺序、不能存可变对象,且 in 查找平均 O(1) 但最坏退化到 O(n)。
{[1,2]} 报 TypeError: unhashable type: 'list'
集合元素必须可哈希(即生命周期内 hash() 值不变且支持 == 比较)。list、dict、set 可变,因此不可哈希;tuple 仅当所有嵌套元素都可哈希时才可哈希。
hash((1, 2)) ✅ 正常返回整数hash((1, [2])) ❌ 报 TypeError
frozenset([1,2]) ✅ 可作集合元素:{frozenset([1,2]), frozenset([3])}
set.difference() 和 - 运算符行为一致,但参数类型限制不同两者语义相同,但 .difference() 接受任意可迭代对象(包括生成器、字符串、字典键视图),而 - 要求右侧必须是 set 实例。
nums = {1, 2, 3}
nums.difference([2, 3, 4]) # → {1},合法
nums - [2, 3, 4] # TypeError: unsupported operand type(s)
nums - set([2, 3, 4]) # → {1},合法
实战中优先用 .difference() 避免临时转 set 开销,尤其处理大文件行、数据库游标等流式数据时。
set.update() 替代多次 add() 提升批量插入性能update() 底层一次哈希表重散列(rehash)可能触发,而多次 add() 可能触发多次,尤其在初始容量不足时。
s = set(); [s.add(x) for x in range(1000)]
s = set(); s.update(range(1000))
注意:update() 不接受单个元素,s.update(1) 会报错 —— 因为 int 不可迭代,正确写法是 s.update([1]) 或 s.add(1)。
集合的「去重」能力依赖哈希一致性,一旦自定义类的 hash 和 eq 冲突(比如修改了影响 eq 的属性但没重算哈希),就可能让元素“消失”在集合里 —— 看得见却查不到。
相关文章:
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
模具网站制作流程,如何找模具客户?
建站与域名管理如何高效结合?
小型网站制作HTML,*游戏网站怎么搭建?
想学网站制作怎么学,建立一个网站要花费多少?
如何高效利用200m空间完成建站?
焦点电影公司作品,电影焦点结局是什么?
盐城做公司网站,江苏电子版退休证办理流程?
高防服务器租用首荐平台,企业级优惠套餐快速部署
学校建站服务器如何选型才能满足性能需求?
如何解决VPS建站LNMP环境配置常见问题?
宝塔面板创建网站无法访问?如何快速排查修复?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
山东网站制作公司有哪些,山东大源集团官网?
python的本地网站制作,如何创建本地站点?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在阿里云香港服务器快速搭建网站?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
北京网站制作网页,网站升级改版需要多久?
如何在宝塔面板创建新站点?
如何选购建站域名与空间?自助平台全解析
高端网站建设与定制开发一站式解决方案 中企动力
怎么将XML数据可视化 D3.js加载XML
内网网站制作软件,内网的网站如何发布到外网?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何批量查询域名的建站时间记录?
利用JavaScript实现拖拽改变元素大小
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何快速搭建高效WAP手机网站吸引移动用户?
济南企业网站制作公司,济南社保单位网上缴费步骤?
制作网页的网站有哪些,电脑上怎么做网页?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
深入理解Android中的xmlns:tools属性
昆明网站制作哪家好,昆明公租房申请网上登录入口?
微信推文制作网站有哪些,怎么做微信推文,急?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
c# 在ASP.NET Core中管理和取消后台任务
建站之星安装提示数据库无法连接如何解决?
如何在搬瓦工VPS快速搭建网站?
建站之星伪静态规则如何正确配置?
网站制作说明怎么写,简述网页设计的流程并说明原因?
安云自助建站系统如何快速提升SEO排名?
贸易公司网站制作流程,出口贸易网站设计怎么做?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
建站之星如何配置系统实现高效建站?
建站主机服务器选型指南与性能优化方案解析
*请认真填写需求信息,我们会在24小时内与您取得联系。