簡體   English   中英

Python3 list.count()時間復雜度

[英]Python3 list.count() time complexity

我一直在尋找有關此文檔的麻煩。 Python 3中list.count()的時間復雜度是多少? 我一直以為只是O(n),有人知道這是不是這種情況?

您可以使用timeit模塊嘗試一下實驗。

在很大范圍的列表長度( 10**010**6 )中對list.count(0)進行計時。

from timeit import timeit
from math import log10
import matplotlib.pyplot as plt

data = []
for i in [10**x for x in range(6)]:
    data.append((i, timeit.timeit('x.count(0)', setup='x=list(range(%d))' % i, number=1000)))

記錄時間和列表長度的日志以更好地可視化(請注意,此處我們使用log10來匹配列表長度的范圍)。

log_data = [log10(x), log10(y) for (x,y) in data]

生成快速繪圖。

plt.figure()
plt.scatter(*zip(*log_times))
plt.xlabel('log(n)')
plt.ylabel('log(time)')
plt.savefig('count_complexity')

在此處輸入圖片說明

看來確實是O(n)復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM