Создание пустого списка в Python


каков наилучший способ создать новый пустой список в Python?

l = [] 

или

l = list()

Я спрашиваю об этом по двум причинам:

  1. технические причины, о которых быстрее. (создание класса вызывает накладные расходы?)
  2. читаемость кода-какой из них является стандартным соглашением.
4 168

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() по своей сути медленнее, чем [], потому что

  1. есть поиск символов (нет способа для python знать заранее, если вы не просто переопределили список, чтобы быть чем-то другим!),

  2. есть вызов функции

  3. затем он должен проверить, был ли передан итерационный аргумент (чтобы он мог создавать список с элементами из него) ps. в нашем случае нет, но есть "если" проверьте

в большинстве случаев разница в скорости не имеют никакого практического значения.

Я использую [].

  1. это быстрее, потому что список обозначений является короткое замыкание.
  2. создание списка С предметы должны выглядеть примерно так же, как создание списка без, почему должна быть разница?

Я действительно не знаю об этом, но мне кажется, по опыту, что jpcgt на самом деле прав. Следующий пример: если я использую следующий код

t = [] # implicit instantiation
t = t.append(1)

в интерпретаторе, затем вызов t дает мне просто "t" без какого-либо списка, и если я добавлю что-то еще, например

t = t.append(2)

Я получаю сообщение об ошибке "'NoneType' объект не имеет атрибута 'append'". Если, Однако, я создаю список по

t = list() # explicit instantiation

затем он отлично работает.