python元组速度比列表快_在Python中对集合,列表和元组进行速度测试可得出令人惊讶的结果-问答-阿里云开发者社区-阿里云...

博主通过代码测试了Python中集合、列表和元组的创建及遍历速度,发现列表创建和遍历速度最快,而集合虽然在查找速度上占优,但其大小大于列表和元组。测试结果显示,当数据量较大时,集合的性能优势并不明显,甚至可能低于列表和元组。这挑战了博主先前关于集合速度更快的认知。
摘要由CSDN通过智能技术生成

我尝试在set,list和tuple之间测试速度,并得到了令人惊讶的结果。

在此之前,基于此答案,我知道set比list更快。

这是我的测试代码:

import timeit,time

from sys import getsizeof as Size

List_Test = [range(1000)]

print("The Size of List is : {}".format(Size(List_Test)))

Set_Test = set(range(1000))

print("The Size of Set is : {}".format(Size(Set_Test)))

Tuple_Test = tuple(range(1000))

print("The Size of Tuple is : {}".format(Size(Tuple_Test)))

print("\nNow is to test speed\n")

time.sleep(3)

def Create_List():

List = [i for i in range(1000)]

def Test_List():

for i in List_Test:

if i == 6:

break

def Create_Set():

Set = set(i for i in range(1000))

def Test_Set():

for i in Set_Test:

if i == 6:

break

def Create_Tuple():

Tuple = tuple(i for i in range(1000))

def Test_Tuple():

for i in Tuple_Test:

if i == 6:

break

t = timeit.repeat(stmt="Create_List()",number=1000,setup="from __main__ import Create_List", repeat=30)

print("The Time of Create_List : {}".format(sum(t)/len(t)))

t = timeit.repeat(stmt="Create_Tuple()",number=1000,setup="from __main__ import Create_Tuple", repeat=30)

print("The Time of Create_Tuple : {}".format(sum(t)/len(t)))

t = timeit.repeat(stmt="Create_Set()",number=1000,setup="from __main__ import Create_Set", repeat=30)

print("The Time of Create_Set : {}".format(sum(t)/len(t)))

print("\n")

t = timeit.repeat(stmt="Test_List()",number=1000,setup="from __main__ import Test_List", repeat=30)

print("The Time of Test_List : {}".format(sum(t)/len(t)))

t = timeit.repeat(stmt="Test_Tuple()",number=1000,setup="from __main__ import Test_Tuple", repeat=30)

print("The Time of Test_Tuple : {}".format(sum(t)/len(t)))

t = timeit.repeat(stmt="Test_Set()",number=1000,setup="from __main__ import Test_Set", repeat=30)

print("The Time of Test_Set : {}".format(sum(t)/len(t)))

print("\nThe end")

最后,我发现:

Size: Set > Tuple > List

Speed: List > Tuple > Set

我认为我的测试代码是错误的。它出什么问题了?

编辑:

我更改了测试代码:

List_Test = list(range(500000))

......

def Test_List():

randomNumber = random.randint(0,500000)

for i in List_Test:

if i == randomNumber:

break

# Other test code is the same

测试的结果总是list≈tuple> set。

当将数字500000(x20)更改为10000000时,

它有时是list≈tuple≈set,但经常是list≈tuple> set。

May I infer that only when all of them have the same length(And the number of length is large),we can use set (Although its size is much larger than tuple and list )?

问题来源: stackoverflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值