[英]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.