web-dev-qa-db-fra.com

Vérifiez si la liste est vide sans utiliser la commande `not`

Comment savoir si une liste est vide sans utiliser la commande not?
Voici ce que j'ai essayé:

if list3[0] == []:  
    print "No matches found"  
else:  
    print list3

Je suis vraiment un débutant alors excusez-moi si je fais des bêtises.

19
user2240288

Dans l'ordre de préférence:

# Good
if not list3:

# Okay
if len(list3) == 0:

# Ugly
if list3 == []:

# Silly
try:
    next(iter(list3))
    # list has elements
except StopIteration:
    # list is empty

Si vous avez à la fois un if et un autre, vous pouvez également réorganiser les étuis:

if list3:
    # list has elements
else:
    # list is empty
62
John Kugelman

Vous découvrez si une liste est vide en testant la "vérité" de celle-ci:

>>> bool([])
False
>>> bool([0])     
True

Alors que dans le deuxième cas, 0 Est faux, mais la liste [0] Est vraie car elle contient quelque chose. (Si vous voulez tester une liste pour contenir toutes les choses falsey, utilisez tout ou tout : any(e for e in li) est vrai si un élément dans li est véridique.)

Il en résulte cet idiome:

if li:
    # li has something in it
else:
    # optional else -- li does not have something 

if not li:
    # react to li being empty
# optional else...

Selon PEP 8 , c'est la bonne façon:

• Pour les séquences (chaînes, listes, tuples), utilisez le fait que les séquences vides sont fausses.

Yes: if not seq:
     if seq:

No: if len(seq)
    if not len(seq)

Vous testez si une liste a un index spécifique existant en utilisant try:

>>> try:
...    li[3]=6
... except IndexError:
...    print 'no bueno'
... 
no bueno

Donc, vous voudrez peut-être inverser l'ordre de votre code:

if list3:  
    print list3  
else:  
    print "No matches found"
7
dawg

Vérifiez sa longueur.

l = []
print len(l) == 0
1
Ali Afshar