废话环节
折腾了两周的Python基础算法,博主感觉对于我一个数据结构小白来说得到了很好反馈,这周呐博主主要研究了一下数据结构底层知识算法时长评测,进行了总结,近期都会发布,本篇博客,博主打算通过最基本的Python语法中的列表(list),讲透算法时长,从广义上评价一个算法的优劣,(在此申明本篇博客仅代表我的个人观点,希望不要引来吃瓜群众围殴),更希望大家以此为例,不断拓展。吃透以后,能为自己的程序写一个评判框架。
测试环境
①Pycharm
②Python中自带的timeit包
代码呈现
很基础的[list]知识希望大家细细对比
①
def test01():
list = []
for i in range(1000):
list += [i]
return list
test01()
②
def test02():
list2 = []
for i in range(1000):
list2.append(i)
return list2
test02()
③
def test03():
return [i for i in range(1000)]
test03()
④
def test04():
list4 = list(range(1000))
return list4
test04()
四块代码最后达到的目标是相同的,大家盲猜一下哪个代码运行时间最短
① ② ③ ④
猜的差不多了,保留你心中的答案,接着往下看,我们让计算机为大家揭秘
贴出完整代码,套用框架进行测试
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/3/17 13:17
# @Author : HaoXuan
# @File : 01_算法时长.py
# @Software: PyCharm
from timeit import Timer
def test01():
list = []
for i in range(1000):
list += [i]
return list
# test01()
def test02():
list2 = []
for i in range(1000):
list2.append(i)
return list2
def test03(): #列表推导式
return [i for i in range(1000)]
def test04():
list4 = list(range(1000))
return list4
if __name__ == "__main__":
timer = Timer('test01()', 'from __main__ import test01')
t1 = timer.timeit(1000)
print(t1)
timer = Timer('test02()', 'from __main__ import test02')
t2 = timer.timeit(1000)
print(t2)
timer = Timer('test03()', 'from __main__ import test03')
t3 = timer.timeit(1000)
print(t3)
timer = Timer('test04()', 'from __main__ import test04')
t4 = timer.timeit(1000)
print(t4)
运行后的结果如下:
经计算机测试,运行时间最短的应该是第④段代码掌声送给选④的铁子
博主一开始猜的是③列表推导式,与生活一样往往自己想的结果不一定都是正确的,实践是检验真理的唯一标准,本篇博客整体较简单,废话颇多,希望大家汲取其中有用的部分吞食,这篇博客也到此结束了。
学习的时间是短暂的,欢迎大家捧场下一篇博客栈(Stack),最通俗的语言讲透栈