2009-08-13 5 views

Répondre

15

Une façon est d'utiliser all et une compréhension de la liste:

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

Cela fonctionne pour les listes vides ainsi. De manière plus générale, pour vérifier si la liste ne contient que des choses qui évaluent à False, vous pouvez utiliser any:

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

Il devrait être 'e is None'. – nikow

+0

C'est probablement plus efficace, mais utiliser '==' n'est pas * faux *. – Stephan202

+0

Petite note: Le lien vers tout est en fait à tout ... –

2

Si vous êtes concerné par des éléments de la liste qui évaluent comme vrai:

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" 

Si vous voulez vérifier strictement None, utilisez filter(lambda x: x is not None, mylist) au lieu de filter(None, mylist) dans la déclaration if ci-dessus.

9

Vous pouvez utiliser la fonction all() à tester est tous les éléments sont 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

Vous peut directement comparer les listes avec ==:

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

if x == [1,2,3] 
Questions connexes