Во-первых, вам нужно немного изменить свой код. Аргумент, заданный для pop()
, в настоящее время является элементом, где он должен быть индексом (используйте remove()
, чтобы удалить первое вхождение элемента).
for i, item in enumerate(self.items):
if item == target:
self.items.pop(i)
Сложность зависит от того, как часто item
соответствует элементу в вашем списке.
Используя n=len(items)
и k
для количества совпадений, сложность составляет O(n, k) = O(n) + k O(n)
. Первое слагаемое происходит из-за того, что мы перебираем весь список, второе соответствует отдельным .pop(i)
операциям.
Таким образом, общая сложность для k=1
просто равна O(n)
и может возрасти до O(n*n)
для k=n
.
Обратите внимание, что сложность для .pop(i)
составляет O(n-i)
. Следовательно, выталкивание первого и последнего элемента равно O(n)
и O(1)
соответственно.
Наконец, я бы вообще рекомендовал не добавлять / удалять элементы к объекту, который вы сейчас просматриваете.