0
点赞
收藏
分享

微信扫一扫

Python数据分析——列表性能测试

山竹山竹px 2022-03-15 阅读 74

首先准备了常用的四种方法

from timeit import Timer #导入timeit模块对函数计时间

#列表连接
def test1():
    l=[]
    for i in range(10000):
        l+=[i]

#追加列表        
def test2():
    l=[]
    for i in range(10000):
        l.append(i)

#列表推导式        
def test3():
    l=[i for i in range(10000)]

#列表构造器调用range函数   
def test4():
    l=list(range(10000))
    
t1=Timer("test1()","from __main__ import test1")
print("concat",t1.timeit(number=1000),"milliseconds")

t2=Timer("test2()","from __main__ import test2")
print("append",t2.timeit(number=1000),"milliseconds")

t3=Timer("test3()","from __main__ import test3")
print("comprehension",t3.timeit(number=1000),"milliseconds")

t4=Timer("test4()","from __main__ import test4")
print("list range",t4.timeit(number=1000),"milliseconds")

要使用timeit模块,首先创建一个Timer对象,其参数是两条Python语句。第一个参数是要为之计时的Python语句;第2个参数是建立测试的语句。

默认情况下,timeit会执行100w次,所以我将number改为1000,执行1000次。

from __main__ import test1:将test1函数从__main__命名空间导入到timeit设置计时的命名空间。

【测试结果】

可以观察到列表连接(concat)最慢,list range最快

列表推导式速度是append两倍的样子

【列表操作常用的大O效率】 

 

举报

相关推荐

0 条评论