Python 中list ,set,dict的大规模查找效率
来源:互联网 发布:吉他简谱制作软件 编辑:程序博客网 时间:2024/06/08 14:33
很多时候我们可能要频繁的进行元素的find 或in操作,本人一直天真的以为python的list做了hash,通过红黑树来高效查找···直到今天我真正来测试它和set,dict的查找效率时,才发现自已想太多了!!!!
先看代码:
__author__ = 'jmh081701'import numpyimport timel=[]sl=set()dl=dict()r=numpy.random.randint(0,10000000,100000)for i in range(0,100000): l.append(r[i]) sl.add(r[i]) dl.setdefault(r[i],1)#生成3种数据结构供查找,常规的list,集合sl,字典dl.里面的元素都是随机生成的,为什么要随机生成元素?这是防止某些结构对有序数据的偏向导致测试效果不客观。start=time.clock()for i in range(100000): t=i in slend=time.clock()print("set:",end-start)#计算通过set来查找的效率start=time.clock()for i in range(100000): t=i in dlend=time.clock()print("dict:",end-start)#计算通过dict的效率start=time.clock()for i in range(100000): t=i in lend=time.clock()print("list:",end-start)#计算通过list的效率
结果:
set: 0.01762632617301519dict: 0.021149536796960248···········
呵呵呵呵···list等了20分钟都没出结果。
所以···结果一览无余啊。
查找效率:set>dict>list
单次查询中:看来list 就是O(n)的;而set做了去重,本质应该一颗红黑树(猜测,STL就是红黑树),复杂度O(logn);dict类似对key进行了hash,然后再对hash生成一个红黑树进行查找,其查找复杂其实是O(logn),并不是所谓的O(1)。O(1)只是理想的实现,实际上很多hash的实现是进行了离散化的。dict比set多了一步hash的过程,so 它比set慢,不过差别不大。
so,如果是要频繁的查找,请使用set吧!
阅读全文
0 0
- Python 中list ,set,dict的大规模查找效率
- python中list 和 dict 效率的一次实践
- Python中set、list、dict、tuple的比较
- python中list,tuple,dict,set的区别及联系
- Python中list,tuple,dict,set的区别和用法
- Python中list,tuple,dict,set的区别和用法
- python中list/tuple/dict/set的区别
- Python中list,tuple,dict,set的区别和用法
- python中in在list和dict中查找效率比较
- Python中list、tuple、dict、set总结
- Python - list, tuple, dict, set的区别
- Python的list、tuple、dict、set
- python的dict、list、set学习运用
- python list tuple dict set
- Python list,Dict和Set
- Python--list,tuple,dict,set.
- Python中dict与set的对比
- python中tuple/list/dict/set常用方法
- gitlab迁移
- windows安装oracle 11.2.0.1时用DBCA创建库hang在2%
- [leetcode]452. Minimum Number of Arrows to Burst Balloons
- video — 移动端适配
- 长连接、短连接、长轮询和WebSocket
- Python 中list ,set,dict的大规模查找效率
- CentOS常用命令
- Java JList的使用和事件响应
- 单点登录原理与简单实现
- Oracle SQL 之 数学计算-开方根(咋个办呢 zgbn)
- pyhton爬虫笔记之实战 爬取淘宝商品价格和名称
- [转载]技改之路:从单块应用到微服务,我的血泪总结
- 虚拟机3.3垃圾收集算法
- 第二章变量和基本类型17.11.8