Создание пустого списка в 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
затем он отлично работает.