3227 Stimmen

Wie kann ich prüfen, ob eine Liste leer ist?

Zum Beispiel, wenn Sie das folgende übergeben:

a = []

Wie kann ich überprüfen, ob a leer ist?

38voto

Sнаđошƒаӽ Punkte 15159

Desde Dokumentation über die Prüfung des Wahrheitswertes:

Alle Werte, die hier nicht aufgeführt sind, gelten als True

  • None
  • False
  • Null eines beliebigen numerischen Typs, zum Beispiel, 0 , 0.0 , 0j .
  • jede leere Sequenz, zum Beispiel, '' , () , [] .
  • jede leere Abbildung, zum Beispiel, {} .
  • Instanzen von benutzerdefinierten Klassen, wenn die Klasse eine __bool__() o __len__() Methode, wenn diese Methode den ganzzahligen Wert Null oder den Wert bool zurückgibt False .

Wie man sieht, ist die leere Liste [] es falsy Das, was man mit einem booleschen Wert tun würde, ist also am effizientesten:

if not a:
    print('"a" is empty!')

0 Stimmen

@DJ_Stuffy_K behaupten, was in Unit-Tests, eine leere Liste? Verwenden Sie einfach assert(not myList) . Wenn Sie außerdem behaupten wollen, dass das Objekt ein list können Sie verwenden assertIsInstance() .

37voto

Taufiq Rahman Punkte 5386

Hier sind einige Möglichkeiten, wie Sie überprüfen können, ob eine Liste leer ist:

a = [] #the list

1) Der ziemlich einfache pythonische Weg:

if not a:
    print("a is empty")

In Python, Leergut wie Listen, Tupel, Mengen, Dicts, Variablen usw. werden als False . Man könnte die Liste einfach als Prädikat behandeln ( Rückgabe eines booleschen Wertes ). Und eine True Wert würde anzeigen, dass er nicht leer ist.

2) Ein sehr expliziter Weg: die Verwendung des len() um die Länge zu ermitteln und zu prüfen, ob sie gleich ist 0 :

if len(a) == 0:
    print("a is empty")

3) Oder man vergleicht sie mit einer anonymen leeren Liste:

if a == []:
    print("a is empty")

4) Eine weitere noch dumm Weg zu tun ist mit exception y iter() :

try:
    next(iter(a))
    # list has elements
except StopIteration:
    print("Error: a is empty")

37voto

verix Punkte 1635

Ich bevorzuge das Folgende:

if a == []:
   print "The list is empty."

52 Stimmen

Dies wird langsamer sein, da Sie unnötigerweise eine zusätzliche leere Liste instanziieren.

43 Stimmen

Dies ist weniger lesbar als if not a: und bricht leichter. Bitte tun Sie das nicht.

0 Stimmen

Es gibt einen guten Punkt, der bereits angesprochen wurde () == [] ist ebenfalls gleich false. Obwohl ich mag, wie diese Implementierung die if not a: Wenn Sie auf jeden Fall eine Liste erwarten, sollte Ihr Beispiel ausreichend sein.

34voto

Vikrant Punkte 1029

Methode 1 (bevorzugt):

if not a : 
   print ("Empty") 

Methode 2 :

if len(a) == 0 :
   print( "Empty" )

Methode 3:

if a == [] :
  print ("Empty")

25voto

Sunil Lulla Punkte 801

Sie können sogar versuchen, mit bool() wie hier. Auch wenn es weniger lesbar ist, so ist es doch ein prägnanter Weg, dies zu tun.

    a = [1,2,3];
    print bool(a); # it will return True
    a = [];
    print bool(a); # it will return False

Ich liebe diese Art der Überprüfung, ob die Liste leer ist oder nicht.

Sehr praktisch und nützlich.

8 Stimmen

Für diejenigen (wie mich), die es nicht wussten, bool() wandelt eine Python-Variable in einen Booleschen Wert um, so dass Sie die Wahrhaftigkeit oder Falschheit speichern eines Wertes, ohne eine if-Anweisung verwenden zu müssen. Ich denke, es ist weniger lesbar als einfach mit einer bedingten wie die akzeptierte Antwort, aber ich bin sicher, es gibt andere gute Anwendungsfälle für sie.

0 Stimmen

Dies kann in einem Ausdruck verwendet werden und ist etwas knapper.

1 Stimmen

Der Nachteil ist, dass a is None . Das ist oft akzeptabel, aber es ist gut, sich dessen bewusst zu sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X