Skip to content

Latest commit

 

History

History
15 lines (11 loc) · 1.26 KB

Chapter_3_散列表_字典和集合总结.md

File metadata and controls

15 lines (11 loc) · 1.26 KB

字典,集合,列表三种在使用in操作符查询时的效率

使用in操作符的次数 dict花费的时间 集合花费的时间 列表花费的时间
1000 0.000202 s 0.000143 s 0.010556 s
100 000 0.000228 s 0.000241 s 0.871560 s
10 000 000 0.000337 s 0.000387 s 97.948056 s

字典 和 集合 背后的原理都是使用散列表来支持in操作符. 也就是要查找一个值是否在某个集合中(或者某个键是否在字典中)时,都是通过直接计算 哈希值 来得到的.由于hash值的特性(同一个值的hash值唯一),通过计算某个键的hash,既可以直接找到这个键的存在位置(同理 集合也是类似的). 所以即使当搜索空间增大10000倍,字典和集合花费的时间几乎没有什么变化.

但是列表的背后没有散列表来支持in操作符,每次搜索都需要扫描一次完整的列表,所以 列表 花费的时间 呈 线性增长

注意: 由上可知,字典和集合在非常大的搜索空间中操作的耗费时间也就是0.0001 s 的级别. 所以,如果你的程序里面有任何的磁盘输入/输出, 那么不管查询有多少个元素的字典或集合,所耗费的时间都能忽略不计.