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?
Inspiriert von @dubiousjims Lösung, schlage ich vor, eine zusätzliche allgemeine Prüfung zu verwenden, ob etwas iterierbar ist
import collections
def is_empty(a):
return not a and isinstance(a, collections.Iterable)
Hinweis: Eine Zeichenkette wird als iterierbar betrachtet. - hinzufügen and not isinstance(a,(str,unicode))
wenn die leere Zeichenkette ausgeschlossen werden soll
Test:
>>> is_empty('sss')
False
>>> is_empty(555)
False
>>> is_empty(0)
False
>>> is_empty('')
True
>>> is_empty([3])
False
>>> is_empty([])
True
>>> is_empty({})
True
>>> is_empty(())
True
Zu weit gefasst; hier geht es nur um die Frage, ob eine Liste leer ist, nicht um die Frage, ob etwas eine leere Iterable ist.
Verwenden Sie einfach is_empty() oder machen Sie eine Funktion wie:-
def is_empty(any_structure):
if any_structure:
print('Structure is not empty.')
return True
else:
print('Structure is empty.')
return False
Es kann für jede Datenstruktur wie eine Liste, Tupel, ein Wörterbuch und viele andere verwendet werden. Dadurch können Sie es viele Male aufrufen, indem Sie einfach is_empty(any_structure)
.
Der Name is_empty
suggeriert, dass es etwas zurückgibt. Aber wenn es das täte, wäre dieses Etwas einfach bool(any_structure)
, die Sie stattdessen verwenden sollten ( wenn brauchen Sie eine bool
überhaupt nicht).
Warum wollen wir eine Variante von bool
das (auch) Meldungen auf der Standardausgabe ausgibt?
Dies ist weder pythonisch noch ein vollständiges Beispiel. Außerdem instanziiert es jedes Mal eine leere Liste, wenn es darauf stößt. Tun Sie das nicht.
@MrWonderful Es wird nicht jedes Mal eine leere Liste erstellt. Es prüft nur, ob die bestehende Liste a
leer ist oder nicht.
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.