Zum Beispiel, wenn Sie das folgende übergeben:
a = []
Wie kann ich überprüfen, ob a
leer ist?
Zum Beispiel, wenn Sie das folgende übergeben:
a = []
Wie kann ich überprüfen, ob a
leer ist?
Desde Dokumentation über die Prüfung des Wahrheitswertes:
Alle Werte, die hier nicht aufgeführt sind, gelten als True
None
False
0
, 0.0
, 0j
.''
, ()
, []
.{}
.__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!')
@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()
.
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")
Dies wird langsamer sein, da Sie unnötigerweise eine zusätzliche leere Liste instanziieren.
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.
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.
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.
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.