助你喫透那些年被捧上天的神祕算法(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),最通俗的語言講透

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