Python列表和集合效率源码对比分析

这篇“Python列表和集合效率源码对比分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python列表和集合效率源码对比分析”文章吧。

创新互联成立与2013年,先为临颍等服务建站,临颍等地企业,进行企业商务咨询服务。为临颍企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

数据查找效率

关于集合和列表数据查找效率差距到底有多大?先看一组实例:

import time
import random
nums = [random.randint(0, 2000000) for i in range(1000)]
list_test = list(range(1000000))
set_test = set(list_test)
count_list, count_set = 0, 0
t1 = time.time()# 测试在列表中进行查找
for num in nums:
 if num in list_test:
 count_list += 1
t2 = time.time()
for num in nums:# 测试在集合中进行查找
 if num in set_test:
 count_set += 1
t3 = time.time()# 测试在集合中进行查找
print('找到个数,列表:{},集合:{}'.format(count_list, count_set))
print('使用时间,列表:{:.4f}s'.format(t2 - t1))
print('使用时间,集合:{:.4f}s'.format(t3 - t2))

输出结果为:

找到个数,列表:515,集合:515
使用时间,列表:7.7953s
使用时间,集合:0.0010s

从上面例子可以清楚地看出,集合的查找效率远远高于列表,因此在不同的应用场景下,一定要选择合适的数据类型,在小数据量下看不出来性能区别,一旦换到大数据量下,就会变得差异性很大。

数据存储开销

集合的查找效率比列表要快得多,主要就是他们的存储原理不一样,集合需要消耗更多的空间来存储额外的信息,用空间开销来换时间效率,接下来我们通过getsizeof()函数看看他们存储开销的差异,getiszeof()函数是python的sys模块中用来获取对象内存大小的函数,返回的大小以字节为单位。

import sys
import random
list_test = list(range(1000000))
set_test = set(range(1000000))
print('列表占用大小:', sys.getsizeof(list_test))
print('集合占用大小:', sys.getsizeof(set_test))

输出结果为:

列表占用大小:9000112
集合占用大小:33554656

从结果可以看出,同样的数据内容,集合存储的开销是列表的好几倍。

以上就是关于“Python列表和集合效率源码对比分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


本文标题:Python列表和集合效率源码对比分析
网页网址:http://pwwzsj.com/article/jjgjgh.html