У меня возникли проблемы с поиском документации по этому вопросу. Какова временная сложность list.count() в Python 3? Я предполагал, что это просто O (n), знает ли кто-нибудь, если это так?Python3 list.count() временная сложность
1
A
ответ
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')
Похоже, что это на самом деле О (п) сложность.
Смежные вопросы
- 1. Временная сложность этой серии
- 2. временная сложность рекурсивной функции
- 3. Временная сложность алгоритмов
- 4. Какова временная сложность string.GetHashCode?
- 5. Худшая временная сложность
- 6. Временная сложность генетического алгоритма
- 7. Какова временная сложность кода?
- 8. временная сложность следующего повторения?
- 9. Временная сложность создания BST
- 10. Временная сложность фрагмента кода
- 11. Временная сложность бесконечной рекурсии
- 12. Временная сложность цикла
- 13. Временная сложность массива Манипуляции
- 14. Временная сложность этого алгоритма?
- 15. Какова временная сложность следующего?
- 16. Временная сложность в BIGO
- 17. Временная сложность кода
- 18. Временная сложность вложенных петель
- 19. временная сложность этого подхода
- 20. Кодирование ввода (временная сложность)
- 21. Какова временная сложность Collection.toArray()?
- 22. Сложная временная сложность
- 23. Какова временная сложность этого?
- 24. Временная сложность операций TreeMultimap
- 25. Временная сложность :: и @ (Ocaml)
- 26. Временная сложность удаления [] Оператор
- 27. Какова временная сложность цикла?
- 28. временная сложность алгоритма
- 29. Временная сложность кода ниже
- 30. Временная сложность распределения памяти
Используйте [источник] (https://github.com/python/cpython/blob/master/Objects/listobject.c#L2181), Люк! Да, это O (n), потому что он выполняет простое линейное сканирование. –
https://hg.python.org/cpython/file/c6880edaf6f3/Objects/listobject.c строка 2321, так что да – shash678