2009-08-13 13 views

Odpowiedz

15

Jednym ze sposobów jest użycie all oraz listę zrozumieniem:

if all(e is None for e in myList): 
    print('all empty or None') 

To działa na pustych list, jak również. Mówiąc bardziej ogólnie, aby sprawdzić, czy lista zawiera tylko rzeczy, które oceniają, aby False, można użyć any:

if not any(myList): 
    print('all empty or evaluating to False') 
+2

Powinno to być 'e to Brak'. – nikow

+0

To jest prawdopodobnie bardziej wydajne, tak, ale użycie '==' nie jest * źle *. – Stephan202

+0

Mała uwaga: link do wszystkich jest właściwie do każdego ... –

2

Jeśli chodzi o elementy na liście, które są prawdziwe:

if mylist and filter(None, mylist): 
    print "List is not empty and contains some true values" 
else: 
    print "Either list is empty, or it contains no true values" 

Jeśli chcesz dokładnie sprawdzić None użyć filter(lambda x: x is not None, mylist) zamiast filter(None, mylist) w rachunku if powyżej.

9

Można użyć funkcji all() do testu to wszystkie elementy są None:

a = [] 
b = [None, None, None] 
all(e is None for e in a) # True 
all(e is None for e in b) # True 
4

You może bezpośrednio porównywać listy z ==:

if x == [None,None,None]: 

if x == [1,2,3] 
Powiązane problemy