Tworzenie pustej listy w Pythonie

Jaki jest najlepszy sposób na utworzenie nowej pustej listy w Pythonie?

l = [] 

Lub

l = list()
Pytam z dwóch powodów:]}
    Z przyczyn technicznych, co jest szybsze. (Tworzenie klasy powoduje napowietrzność?)
  1. czytelność kodu - która z nich jest standardową konwencją.
Author: suci, 2010-06-04

4 answers

Oto jak możesz sprawdzić, który fragment kodu jest szybszy:

% 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

Jednak w praktyce ta inicjalizacja jest najprawdopodobniej bardzo małą częścią twojego programu, więc martwienie się o to jest prawdopodobnie błędne.

Czytelność jest bardzo subiektywna. Wolę [], ale niektórzy bardzo kompetentni ludzie, jak Alex Martelli, wolą list(), ponieważ jest zaimkiem .
 248
Author: unutbu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:01

list() jest z natury wolniejszy niż [], Ponieważ

  1. Istnieje wyszukiwanie symboli (nie ma mowy, aby python wiedział z góry, jeśli nie tylko redefiniujesz listę, aby była czymś innym!),

  2. Istnieje wywołanie funkcji,

  3. Następnie musi sprawdzić, czy został przekazany argument iterowalny (aby mógł z niego utworzyć listę z elementami) ps. brak w naszym przypadku, ale jest" if " check

W większości przypadków różnica prędkości nie będzie praktyczna różnica.

 94
Author: Nas Banov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 12:52:51

Używam [].

  1. jest szybszy, ponieważ notacja listy jest zwarciem.
  2. Tworzenie listy z elementów powinno wyglądać mniej więcej tak samo jak tworzenie listy bez, dlaczego ma być różnica?
 11
Author: Georg Schölly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-04 08:06:08

Naprawdę Nie wiem o tym, ale wydaje mi się, z doświadczenia, że jpcgt rzeczywiście ma rację. Następujący przykład: Jeśli używam następującego kodu

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

W interpreterze, wtedy wywołanie t daje mi tylko "t" bez żadnej listy, a jeśli dopiszę coś innego, np.

t = t.append(2)

Pojawia się błąd "'NoneType' obiekt nie ma atrybutu 'append'". Jeśli jednak stworzę listę przez

t = list() # explicit instantiation
Więc działa dobrze.
 4
Author: Yinyue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 13:24:24