Создание пустого списка в Python
каков наилучший способ создать новый пустой список в Python?
l = []
или
l = list()
Я спрашиваю об этом по двум причинам:
- технические причины, о которых быстрее. (создание класса вызывает накладные расходы?)
- читаемость кода-какой из них является стандартным соглашением.
4 ответа:
вот как вы можете проверить, какой кусок кода быстрее:
% python -mtimeit "l=[]" 10000000 loops, best of 3: 0.0711 usec per loop % python -mtimeit "l=list()" 1000000 loops, best of 3: 0.297 usec per loopоднако на практике эта инициализация, скорее всего, является чрезвычайно малой частью вашей программы, поэтому беспокоиться об этом, вероятно, неправильно.
читаемость очень субъективна. Я предпочитаю
[], но некоторые очень знающие люди, такие как Алекс Мартелли, предпочитаютlist(), потому что это произносимые.
list()по своей сути медленнее, чем[], потому что
есть поиск символов (нет способа для python знать заранее, если вы не просто переопределили список, чтобы быть чем-то другим!),
есть вызов функции
затем он должен проверить, был ли передан итерационный аргумент (чтобы он мог создавать список с элементами из него) ps. в нашем случае нет, но есть "если" проверьте
в большинстве случаев разница в скорости не имеют никакого практического значения.
Я использую
[].
- это быстрее, потому что список обозначений является короткое замыкание.
- создание списка С предметы должны выглядеть примерно так же, как создание списка без, почему должна быть разница?
Я действительно не знаю об этом, но мне кажется, по опыту, что jpcgt на самом деле прав. Следующий пример: если я использую следующий код
t = [] # implicit instantiation t = t.append(1)в интерпретаторе, затем вызов t дает мне просто "t" без какого-либо списка, и если я добавлю что-то еще, например
t = t.append(2)Я получаю сообщение об ошибке "'NoneType' объект не имеет атрибута 'append'". Если, Однако, я создаю список по
t = list() # explicit instantiationзатем он отлично работает.