Вдохновленный этот хороший ответ,
Здесь контрольный показатель:
import timeit
def test1():
a = [1,2,3]
a.insert(0,1)
def test2():
a = [1,2,3]
a[0:0]=[1]
print (timeit.timeit('test1()','from __main__ import test1'))
print (timeit.timeit('test2()','from __main__ import test2'))
Для меня test2
работает слабее (~ 10%). Почему это так? Я ожидаю, что это будет медленнее, поскольку:
- Назначение slice должно принимать итерации любой длины и поэтому должно быть более общим.
- в назначении slice нам нужно создать новый список с правой стороны, чтобы заставить его работать.
Может кто-нибудь помочь мне понять это?
(используя python 2.7 на OS-X 10.5.8)