当前位置: 代码网 > it编程>前端脚本>Python > Python中字典和列表的索引效率分析及实战结果

Python中字典和列表的索引效率分析及实战结果

2026年03月10日 Python 我要评论
1.序列python有多种内建的序列,所有序列都可以做某些特定的操作,大致上常用的是:加,乘,索引,分片以及检查某个元素是否属于序列的成员。在这里我们重点讨论两种,字典与列表。并且只讨论其索引效率2.

1.序列

python有多种内建的序列,所有序列都可以做某些特定的操作,大致上常用的是:加,乘,索引,分片以及检查某个元素是否属于序列的成员。 在这里我们重点讨论两种,字典与列表。并且只讨论其索引效率

2. 列表

列表是python中最具灵活性的有序集合对象类型,其属性:

1. 任意对象的有序集合

2. 通过偏移读取

3. 可变长度、异构以及任意嵌套

4. 属于可变序列的分类

5. 对象引用数组

3. 字典

除了列表外,字典是python中最具灵活性的内置数据结构类型,其属性:

1. 通过键而不是偏移量来读取

2. 任意对象的无序集合(键的hash值存在有序)

3. 可变长、异构以及任意嵌套

4. 属于可映射类型

5. 对象引用表(散列表)

在python中,字典是通过哈希表实现的。也就是说,字典是一个数组,而数组的索引是键经过哈希函数处理后得到的。哈希函数的目的是使键均匀地分布在数组中。

4. 索引效率分析

通过上述可以简单地了解字典和列表的区别,列表是根据偏移量来读取的,字典是根据键的hash来读取的。

通过实验来测试其索引效率:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
###############################################
# file name   : test.py
# author      : younger liu
# mail        : lewiyon@126.com
# created time: tue 19 jun 2018 08:58:42 am cst
# description : 
###############################################
 
import time
import random
import string
 
max_count = 1000000
 
def test_dict(data, key=none):
	b_time = int(time.time()*1000*1000)
	data.get(key)
	a_time = int(time.time()*1000*1000)
 
	print("elapsed time %d us to query [%s]" % (a_time - b_time, key))
 
def test_array(data, key=none):
	b_time = int(time.time()*1000*1000)
	for ele in data:
		if ele == key:
			break
		continue
	a_time = int(time.time()*1000*1000)
	print("elapsed time %d us to query [%s]" % (a_time - b_time, key))
 
def gen_arr():
	arr = []
	for i in range(max_count):
		ele = ''.join(random.sample(string.ascii_letters + string.digits, 8))
		arr.append(ele)
		if i == 0:
			first = ele
		elif i == max_count - 1:
			last = ele
	return arr, first, last
 
def gen_dict():
	dict = {}
	for i in range(max_count):
		ele = ''.join(random.sample(string.ascii_letters + string.digits, 8))
		dict[ele] = ele
		if i == 0:
			first = ele
		elif i == max_count -1:
			last = ele
	return dict, first, last
 
if __name__ == '__main__':
	arr, first_ele, last_ele = gen_arr()
	print("-----query first ele in array-------")
	test_array(arr, first_ele)
	print("-----query last ele in array-------")
	test_array(arr, last_ele)
	print("-----query ele not in array-------")
	test_array(arr, '111111')
	dict, first_key, last_key = gen_dict()
	print("-----query first generated ele in dict-------")
	test_dict(dict, first_key)
	print("-----query last generated ele in dict-------")
	test_dict(dict, last_key)
	print("-----query ele not in dict-------")
	test_dict(dict, '111111')

运行结果如下:

-----query first ele in array-------
elapsed time 10 us to query [drp3aezq]
-----query last ele in array-------
elapsed time 37236 us to query [6agsbq37]
-----query ele not in array-------
elapsed time 38666 us to query [111111]
-----query first generated ele in dict-------
elapsed time 12 us to query [dkyn2xjl]
-----query last generated ele in dict-------
elapsed time 3 us to query [brncewp2]
-----query ele not in dict-------
elapsed time 2 us to query [111111]

多次运行,其结果相差不多

由此可见,字典的索引效率要远远大于列表

总结

到此这篇关于python中字典和列表的索引效率分析及实战结果的文章就介绍到这了,更多相关python字典和列表索引效率内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com