Я измеряю время удаления элемента из python set
по сравнению с list
. Мой код timeit для списка вызывает ValueError: ... x not in list
, но только когда я запускаю более одной итерации с timeit
!??
Похоже, что для списка переменная, созданная в коде установки, повторно используется в последующей итерации (как если бы код установки не запускался во второй раз??).
Вот мой код:
In [1]: import timeit
In [2]: timeit.timeit(stmt='a.discard(10**5)', setup='a = set(range(10**6))', number=100000)
Out[2]: 0.02187999989837408
In [3]: timeit.timeit(stmt='a.remove(10**5)', setup='a = list(range(10**6))', number=1)
Out[3]: 0.023419374600052834
In [4]: timeit.timeit(stmt='a.remove(10**5)', setup='a = list(range(10**6))', number=2)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
...
ValueError: list.remove(x): x not in list
В чем дело??