【python】list、dict、set插入、查询速度对比

结论:

插入速度:

  • list append 速度最快
  • dict[i] =1 的速度紧随其后!

查询速度上:

  • set的查询速度最快
  • dict的查询速度次之

这一段时间经常用python做数据的处理,需求中数据量上大约要100万条以下,在优化处理速度时主要提升数据的查询、插入效率。

插入速速

python 的list、dict、set插入比较

# coding:utf-8
import time

number = 100000

set1 = set()
set2 = set()
list1= []
dict1 = {}

start = time.time()
for i in range(number):
    set1.add(i)
end = time.time()
print("set add:", end - start)

start = time.time()
for i in range(number):
    set2.update([i])
end = time.time()
print("set update:", end - start)

start = time.time()
for i in range(number):
    list1.insert(0, i)
end = time.time()
print("list insert:", end - start)

start = time.time()
for i in range(number):
    list1.append(i)
end = time.time()
print("list append:", end - start)

start = time.time()
for i in range(number):
    dict1.update({i: 1})
end = time.time()
print("dict update:", end - start)

start = time.time()
for i in range(number):
    dict1[i] = 1
end = time.time()
print("dict[i] = :", end - start)

运行的结果是

python各变量的插入效率对比.py 
set add: 0.008615493774414062
set update: 0.015752315521240234
list insert: 1.4502811431884766
list append: 0.006005764007568359
dict update: 0.01952505111694336
dict[i] = : 0.006249427795410156

查询速度

python 的list、dict、set、tuple查询速度比较

# coding:utf-8
import numpy
import time

l = []
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.里面的元素都是随机生成的,为什么要随机生成元素?这是防止某些结构对有序数据的偏向导致测试效果不客观。
tp = tuple(l)

start = time.time()
for i in range(100000):
    t = i in sl
end = time.time()
print("set:", end - start)
# 计算通过set来查找的效率
start = time.time()
for i in range(100000):
    t = i in dl
end = time.time()
print("dict:", end - start)
# 计算通过dict的效率
start = time.time()
for i in range(100000):
    t = i in tp
end = time.time()
print("tuple:", end - start)
# 计算通过tuple的效率
start = time.time()
for i in range(100000):
    t = i in l
end = time.time()
print("list:", end - start)
# 计算通过list的效率

运行结果

set: 0.0072100162506103516
dict: 0.00818181037902832
tuple: 340.1857137680053732
list: 274.461221694946345
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中的list(列表),tuple(元组),dict(字典)和set(集合)是常见的数据结构。 1. 列表(list)是一个可变的、有序的元素集合。可以通过方括号[]来创建一个列表,列表中的元素可以是任意类型,并且可以重复。列表提供了丰富的操作方法,如添加元素、删除元素、获取元素等。 2. 元组(tuple)是一个不可变的、有序的元素集合。可以通过小括号()来创建一个元组,元组中的元素可以是任意类型。元组一旦创建后,不能修改其元素的值。元组通常用于存储不可变的数据,如坐标位置、颜色等。 3. 字典(dict)是一种键值对(key-value)的数据结构。可以通过花括号{}来创建一个字典,字典中的元素是无序的,并且每个元素由一个键和对应的值组成。字典中的键必须是唯一的,而值可以是任意类型。字典提供了根据键获取值、添加键值对、删除键值对等操作。 4. 集合(set)是一个无序的、不重复的元素集合。可以通过花括号{}或set()函数来创建一个集合,集合中的元素不能重复。集合提供了并集、交集、差集等常用的数学运算操作,同时还支持元素的添加、删除等操作。 在编程中,根据具体的需求选择使用合适的数据结构能够更高效地处理数据,并且提供相应的操作方法方便开发。以上是对Python中常见的列表、元组、字典和集合的简要介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值