it-swarm.com.de

Erstellen einer leeren Liste in Python

Was ist der beste Weg, um eine neue leere Liste in Python zu erstellen?

l = [] 

oder

l = list()

Ich frage dies aus zwei Gründen:

  1. Technische Gründe, was schneller ist. (Das Erstellen einer Klasse verursacht Overhead?)
  2. Codelesbarkeit - welche ist die Standardkonvention.
222
user225312

So können Sie testen, welcher Code schneller ist:

% 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

In der Praxis ist diese Initialisierung jedoch höchstwahrscheinlich ein äußerst kleiner Teil Ihres Programms, weshalb es wahrscheinlich falsch ist, sich darüber Gedanken zu machen.

Die Lesbarkeit ist sehr subjektiv. Ich bevorzuge [], aber einige sehr sachkundige Leute, wie Alex Martelli, bevorzugen list(), weil es ist aussprechbar .

304
unutbu

list() ist von Natur aus langsamer als [], weil

  1. es gibt eine Symbolsuche (python kann nicht im Voraus wissen, ob Sie die Liste nicht neu definiert haben, um etwas anderes zu sein!).

  2. es gibt Funktionsaufruf,

  3. dann muss geprüft werden, ob ein wiederholbares Argument übergeben wurde (damit eine Liste mit Elementen daraus erstellt werden kann). ps. keine in unserem Fall, aber es gibt "wenn" zu überprüfen

In den meisten Fällen macht der Geschwindigkeitsunterschied jedoch keinen praktischen Unterschied.

123
Nas Banov

Ich benutze [].

  1. Es ist schneller, weil die Listennotation ein Kurzschluss ist.
  2. Erstellen einer Liste mit Elemente sollten ungefähr so ​​aussehen wie das Erstellen einer Liste ohne, warum sollte es einen Unterschied geben?
15
Georg Schölly

Ich weiß es nicht wirklich, aber es scheint mir aus Erfahrung, dass jpcgt tatsächlich richtig ist. Folgendes Beispiel: Wenn ich folgenden Code verwende

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

wenn ich dann im Interpreter t aufrufe, bekomme ich nur "t" ohne Liste, und wenn ich etwas anderes anhänge, z.

t = t.append(2)

Ich erhalte die Fehlermeldung "'NoneType'-Objekt hat kein Attribut' Anhängen '". Wenn ich aber die Liste erstelle von

t = list() # explicit instantiation

dann funktioniert es gut.

2
Yinyue