[英]Python3 list.count() time complexity
我一直在尋找有關此文檔的麻煩。 Python 3中list.count()的時間復雜度是多少? 我一直以為只是O(n),有人知道這是不是這種情況?
您可以使用timeit
模塊嘗試一下實驗。
在很大范圍的列表長度( 10**0
到10**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.