python資料結構的效能測試

2022-07-15 03:24:09 字數 1653 閱讀 9289

import timeit

def t1():

l =

for i in range(10000):

l = l + [i]

def t2():

l =

for i in range(10000):

def t3():

l = [i for i in range(10000)]

def t4():

l = list(range(10000))

def t5():

l =

for i in range(10000):

l.insert(0,i)

from timeit import timer

timer1 = timer("t1()", "from __main__ import t1")

timer2 = timer("t2()", "from __main__ import t2")

timer3 = timer("t3()", "from __main__ import t3")

timer4 = timer("t4()", "from __main__ import t4")

timer5 = timer("t5()", "from __main__ import t5")

print("拼接", timer1.timeit(number=100), "seconds")

print("尾部插入 ", timer2.timeit(number=100), "seconds")

print("頭部插入 ", timer5.timeit(number=100), "seconds")

print("列表生成式 ", timer3.timeit(number=100), "seconds")

print("list生成 ", timer4.timeit(number=100), "seconds")

結果

拼接 13.677228502 seconds

尾部插入 0.10198352399999955 seconds

頭部插入 2.405467333999999 seconds

列表生成式 0.04342989099999883 seconds

list生成 0.029161853999998044 seconds

結論

使用list(range())生成的效率意外的要比其他的高的多!!! 驚了!

注:k為變化值,如 切片 k=y-x

timeit模組可以用來測試一小段python**的執行速度。

class timeit.timer(stmt='pass', setup='pass', timer=)

timeit.timer.timeit(number=1000000)

timer類中測試語句執行速度的物件方法。number引數是測試**時的測試次數,預設為1000000次。方法返回執行**的耗時,乙個float型別的秒數。

Python資料結構效能分析

告訴大家python列表和字典操作的 大o 效能。然後我們將做一些基於時間的實驗來說明每個資料結構的花銷和使用這些資料結構的好處 方式一 deftest01 alist for i in range 1000 alist i return alist 方式二 deftest02 alist for ...

資料結構測試(二)

1 假設以陣列 a m 存放迴圈佇列的元素,其頭尾指標分別為 front 和 rear,則當前佇列中的元素個數為 a rear front m m b rear front 1 c front rear m m d rear front m 正確答案 a 2對於棧運算元據的原則是 a 先進先出 b ...

Python的資料結構

定義乙個列表 用中括號包起來的,為列表 a 定義乙個空列表 a list 通過函式定義乙個空列表,也可以把其他可迭代物件轉化為列表 a 1,2,3 列表的索引 列表的索引,也就是指列表中值的位置 從左往右,索引從0開始 從右往左,索引從 1開始 可以通過索引取值 可以取單個值 可以取多個值 a li...