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?

11voto

AndreyS Scherbakov Punkte 2516

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

2 Stimmen

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.

1 Stimmen

Wenn ich nicht zufrieden wäre mit if a: wäre es, weil ich eine Ausnahme wollte, wenn a nicht eine Art Container war. (Als ein iterierbar erlaubt auch Iteratoren, die nicht sinnvoll auf Leerheit getestet werden können).

11voto

l. zhang Punkte 327

Könnten wir ein einfaches if else verwenden:

item_list=[]
if len(item_list) == 0:
    print("list is empty")
else:
    print("list is not empty")

5 Stimmen

-1 - Um Verwirrung zu vermeiden, verwenden Sie keine reservierten Wörter für Variablennamen, oder Sie könnten ein überraschendes Verhalten erhalten, wenn Sie versuchen, zum Beispiel "list()" aufzurufen... etwas wie "TypeError: 'list' object is not callable" oder ähnliches.

8voto

Vineet Jain Punkte 1466

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) .

3 Stimmen

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).

4 Stimmen

Warum wollen wir eine Variante von bool das (auch) Meldungen auf der Standardausgabe ausgibt?

0 Stimmen

@DavisHerring Wir haben immer zwei Möglichkeiten: Zum einen können wir mit einer Funktion drucken, zum anderen mit return bool variabel. Sie haben die Wahl. Ich schreibe beide, damit Sie zwischen ihnen wählen können.

8voto

Ashiq Imran Punkte 1632

Eine einfache Möglichkeit ist die Überprüfung, ob die Länge gleich Null ist.

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

7voto

Trect Punkte 2193

Ab Python3 können Sie Folgendes verwenden

a == []

um zu prüfen, ob die Liste leer ist

EDIT : Dies funktioniert auch mit python2.7.

Ich bin mir nicht sicher, warum es so viele komplizierte Antworten gibt. Es ist ziemlich klar und einfach

2 Stimmen

Erklären Sie bitte genauer, wie es funktioniert, ohne "wenn" zu schreiben?

4 Stimmen

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.

2 Stimmen

@MrWonderful Es wird nicht jedes Mal eine leere Liste erstellt. Es prüft nur, ob die bestehende Liste a leer ist oder nicht.

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