您当前的位置: 首页 >  数据结构

IT之一小佬

暂无认证

  • 2浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数据结构之列表 timeit

IT之一小佬 发布时间:2021-04-11 11:57:23 ,浏览量:2

数据结构之列表  timeit timeit模块

timeit模块可以用来测试一小段python代码的执行速度

class timeit.Timer(stmt=‘pass’,setup=‘pass’,timer=)

Timer是测量小段代码执行速度的类

stmt参数是要测试的代码语句(statment)

setup参数是运行代码时需要的设置

timer参数是一个定时器函数,与平台有关

timeit.Timer.timeit(number=1000000)

Timer类中测试语句执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的平均耗时,一个float类型的秒数  

python列表类型不同操作的时间效率

python生成列表的常见形式有一下四种:

  • 两个列表的相加
  • 列表生成器
  • 可迭代对象转化为列表
  • 对空列表进行元素追加

对于以上四种形式,自定义四种函数实现

from timeit import Timer


#  对空列表进行元素追加
def test1():
    li = []
    for i in range(10000):
        li.append(i)


def test2():
    li = []
    for i in range(10000):
        li = li + [i]


def test3():
    li = [i for i in range(10000)]


def test4():
    li = list(range(10000))


time1 = Timer('test1()', 'from __main__ import test1')
print('append追加:', time1.timeit(1000))

time2 = Timer('test2()', 'from __main__ import test2')
print('求和:', time2.timeit(1000))

timer3 = Timer('test3()', 'from __main__ import test3')
print("列表生成器:", timer3.timeit(1000))

timer4 = Timer('test4()', 'from __main__ import test4')
print("可迭代对象转化:", timer4.timeit(1000))

运行结果:

元素追加(append和insert)
from timeit import Timer


def test5():
    li = []
    for i in range(10000):
        li.append(i)


def test6():
    li = []
    for i in range(10000):
        li.insert(0, i)  # 头部插入


time5 = Timer('test5()', 'from __main__ import test5')
print('append:', time5.timeit(1000))

time6 = Timer('test6()', 'from __main__ import test6')
print('insert:', time6.timeit(1000))

运行结果:

结果来看尾部添加的效率明显优于头部添加,这与python的列表数据存储方式决定的 同理,pop删除元素方式,从队头删除的效率要远远低于从队尾删除元素的效率。

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0593s