Boolean test d'une liste en Python
J'ai été le tester une liste pour voir si elle est vide ou pas. Normalement, j'utilise len(liste) == 0 et j'ai vaguement souvenu d'avoir lu un peu tout à l'heure que la bonne façon de tester si une liste est vide était de savoir si c'était Vrai ou faux.
J'ai donc essayé liste est Fausse, et qui a retourné False. Peut-être que je suis supposé être l'aide d' == ?
Nope, qui a également retourné false. la liste est Vrai, retourné false comme l'a fait la liste == True.
Maintenant, je suis confus donc je fais un rapide google et à la fin jusqu'à: La meilleure façon de vérifier si une liste est vide
Haut réponse est:
if not a:
print "List is empty"
Donc, je recherche autour de un peu plus et à la fin dans le python manuel où 4.1 les états:
N'importe quel objet peut être testé pour une valeur de vérité, pour une utilisation dans un si ou de tout état ou comme opérateur pour les opérations Booléennes ci-dessous. Les valeurs suivantes sont considérées comme fausses:
toute séquence vide, par exemple, ", (), [].
Maintenant, je suis en plaine confus. Si je test une liste, comme si pas la liste, il fonctionne très bien. Mais si une liste vide est faux, alors pourquoi ne puis-je faire si la liste est Fausse ou si la liste == False?
Grâce
OriginalL'auteur Jason White | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
Une liste vide n'est pas Faux, mais quand vous la convertir en une valeur de type boolean, il convertit la valeur False. De même pour les dicts, tuples, chaînes, etc.:
Lorsque vous mettez quelque chose dans la condition d'un
if
de la clause, c'est sa valeur booléenne qui est utilisé pour tester leif
. C'est pourquoiif someList
est le même queif bool(someList)
. De même,not foo
ne booléenne pas, doncnot []
est égale à True.OriginalL'auteur BrenBarn
Comme d'autres l'ont dit, en python
bool([]) == False
. Une chose qui est souvent mis à profit par python pour les programmeurs, c'est que les opérateursand
etor
n'est pas (nécessairement) return True/False. Considérez les points suivants:Ce qui se passe dans un
if
est que l'état s'évalué comme ci-dessus, puis python appelle implicitementbool
sur le résultat, de Sorte que vous pouvez le penser comme:est la même chose que:
autant que python est concerné. De même pour le
not
opérateur:est la même chose que
OriginalL'auteur mgilson
mylist is False
signifie "est l'objet nommémylist
exactement le même objet commeFalse
?"mylist == False
signifie "est l'objet nommémylist
égal àFalse
?not mylist
signifie "ne fait l'objet nommémylist
se comporter falsily?Aucune de ces sont équivalentes:
1 is not 1.0
mais1 == 1.0
et[] != False
maisnot [] is True
.OriginalL'auteur Katriel
En comparant la liste
False
, et les tests de la liste de la vérité ou de la fausseté ne sont pas tout à fait la même chose. Une liste vide n'est pas égal àFalse
, mais se comporte commeFalse
dans un contexte booléen.Voici une autre façon de le dire qui pourrait aider ce sens:
OriginalL'auteur sblom