python 常见问答题
python,常见,问答题
2025-04-07 09:01:32 时间
1. list set dict 的查询效率
在一个长度为一百万(
1000000
)的列表中搜索某个元素是否存在,用哪个数据结构的速度是最快的呢
答案是 set 最快,dict 其次,list 是最慢的。
set 对列表进行了去重,底层相当于是一颗红黑树,复杂度 O(logn);
dict 对 key 进行了 hash,然后再通过 hash 的结果进行二分查找从而确定是否有这个 key,其查询的复杂度是 O(logn),并不是的 O(1),O(1) 是已知存在 key 的情况下查 value 的情况;
list 就是纯纯的 O(n)。
import random
import time
# 生成随机数
nums = random.sample(range(1,1000000000), 10000000)
# print(nums)
my_list = []
my_set = set()
my_dict = {}
# 赋值
my_list.extend(nums)
my_set = set(nums)
my_dict = { i : 1 for i in nums}
# set查询效率
start_time = time.time()
for i in range(10000000):
flag = i in my_set
print(time.time() - start_time)
# dict查询效率
start_time = time.time()
for i in range(10000000):
flag = i in my_dict
print(time.time() - start_time)
# list查找效率
start_time = time.time()
for i in range(10000000):
flag = i in my_list
print(time.time() - start_time)
reference: https://blog.csdn.net/weixin_48629601/article/details/107532754
相关文章
- python调试工具ipdb基本命令
- Python爬取网易云歌曲评论,做词云分析
- Python-drf前戏38.3-前端Vue03
- Python 细聊从暴力(BF)字符串匹配算法到 KMP 算法之间的精妙变化
- Python实现AI视频识别——手势控制[通俗易懂]
- python 画图–简单开始及折线图[通俗易懂]
- Python与数据库之学员管理系统「建议收藏」
- 假期来啦!技术人如何用 Python 实现景区安防系统
- sklearn cross validation_python sklearn
- python——正则表达式(re模块)详解
- 超强 Python 数据可视化库,一文全解析
- Python 图_系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径算法
- python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能
- Python-基础02-程序与用户交互
- b站动漫_python爬b站视频
- Python办公自动化 | word 文本转 excel
- Python递归实现全排列
- python下mqtt服务器的搭建_搭建MQTT服务器
- Python概述
- ubuntu升级python版本