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?

19voto

Andy Jazz Punkte 34407

Um zu überprüfen, ob eine Liste leer ist oder nicht, können Sie zwei Möglichkeiten nutzen. Aber denken Sie daran, dass wir den Weg der expliziten Prüfung auf einen Sequenztyp vermeiden sollten (es ist ein weniger pythonisch Weg):

def enquiry(list1):
    return len(list1) == 0

# ––––––––––––––––––––––––––––––––

list1 = [] 

if enquiry(list1): 
    print("The list isn't empty") 
else: 
    print("The list is Empty") 

# Result: "The list is Empty".

Der zweite Weg ist ein pythonischer ein. Diese Methode ist eine implizite Art der Überprüfung und viel besser als die vorherige.

def enquiry(list1): 
    return not list1

# ––––––––––––––––––––––––––––––––

list1 = [] 

if enquiry(list1): 
    print("The list is Empty") 
else: 
    print("The list isn't empty") 

# Result: "The list is Empty"

Ich hoffe, das hilft.

1 Stimmen

Hochgestuft, weil er auch zeigt, wie man überprüft, ob er nicht leer ist! Dies hilft, den entgegengesetzten, aber ebenso wichtigen Anwendungsfall abzudecken

2 Stimmen

Beachten Sie, dass die zweite Option möglicherweise nicht mit anderen gängigen Array-Objekten wie Numpy-Arrays funktioniert.

18voto

Tagar Punkte 12059
def list_test (L):
    if   L is None  : print('list is None')
    elif not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test(None)
list_test([])
list_test([1,2,3])

Manchmal ist es sinnvoll, zu testen, ob None und für die Leere getrennt, da es sich um zwei verschiedene Zustände handelt. Der obige Code erzeugt die folgende Ausgabe:

list is None 
list is empty 
list has 3 elements

Obwohl es nichts wert ist, dass None ist fehlerhaft. Wenn Sie also nicht separat testen wollen für None -ness, das müssen Sie nicht tun.

def list_test2 (L):
    if not L      : print('list is empty')
    else: print('list has %d elements' % len(L))

list_test2(None)
list_test2([])
list_test2([1,2,3])

produziert erwartet

list is empty
list is empty
list has 3 elements

1 Stimmen

IMHO ist dies die beste Antwort. Sie behandelt die Nuancen in Bezug auf None y [] (eine leere Liste) bei der Prüfung.

15voto

Rahul Punkte 9883

Wenn Sie prüfen wollen, ob eine Liste leer ist:

l = []
if l:
    # do your stuff.

Wenn Sie prüfen wollen, ob alle Werte in der Liste leer sind. Es wird jedoch True für eine leere Liste:

l = ["", False, 0, '', [], {}, ()]
if all(bool(x) for x in l):
    # do your stuff.

Wenn Sie beide Fälle zusammen verwenden wollen:

def empty_list(lst):
    if len(lst) == 0:
        return False
    else:
        return all(bool(x) for x in l)

Jetzt können Sie es verwenden:

if empty_list(lst):
    # do your stuff.

2 Stimmen

All(bool(x) für x in l) ist Wahr für eine leere Liste

15voto

HackerBoss Punkte 813

Es wurden viele Antworten gegeben, und viele von ihnen sind ziemlich gut. Ich wollte nur hinzufügen, dass die Prüfung

not a

gilt auch für None und andere Arten von leeren Strukturen. Wenn Sie wirklich nach einer leeren Liste suchen wollen, können Sie dies tun:

if isinstance(a, list) and len(a)==0:
    print("Received an empty list")

0 Stimmen

Es ist möglich, dass dies eine Ausnahme auslöst, wenn a keine Liste ist und a hat keine Methode __len__ umgesetzt. Ich würde empfehlen: if isinstance(obj, list): if len(obj) == 0: print '...'

9 Stimmen

@SvenKrüger Nö. Betreiber and ist in Python faul. Nichts nach and wird ausgeführt, wenn die Bedingung vor and Falsch ist.

14voto

Andrey Topoleov Punkte 1006
print('not empty' if a else 'empty')

ein wenig praktischer:

a.pop() if a else None

und die kürzeste Version:

if a: a.pop()

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