助你吃透那些年被捧上天的神秘算法(Python版③)

废话环节

折腾了两周的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()   

四块代码最后达到的目标是相同的,大家盲猜一下哪个代码运行时间最短
① ② ③ ④
HaoXuan
猜的差不多了,保留你心中的答案,接着往下看,我们让计算机为大家揭秘
贴出完整代码,套用框架进行测试

#!/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)

运行后的结果如下:
HaoXuan
经计算机测试,运行时间最短的应该是第④段代码掌声送给选④的铁子
博主一开始猜的是③列表推导式,与生活一样往往自己想的结果不一定都是正确的,实践是检验真理的唯一标准,本篇博客整体较简单,废话颇多,希望大家汲取其中有用的部分吞食,这篇博客也到此结束了。
HaoXuan
学习的时间是短暂的,欢迎大家捧场下一篇博客栈(Stack),最通俗的语言讲透

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章