Python3 list.count()时间复杂度

时间:2016-12-16 02:42:35

标签: python python-3.x time-complexity

我在找到这方面的文档方面遇到了很多麻烦。 Python 3中list.count()的时间复杂度是多少?我一直在假设它只是O(n),有人知道是不是这样吗?

1 个答案:

答案 0 :(得分:3)

您可以使用timeit模块尝试一些实验。

在很长的列表长度(list.count(0)10**0)上计时10**6

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')

enter image description here

似乎确实是O(n)的复杂性。

相关问题