Comment compter le nombre d'occurrences de "None" dans une liste?
Je suis en train de compter les choses qui ne sont pas None
, mais je veux False
et numérique des zéros pour être accepté. Logique inverse: je veux compter à tout sauf à ce qu'il a été explicitement déclaré None
.
Exemple
Juste le 5ème élément, il n'est pas incluse dans le compte:
>>> list = ['hey', 'what', 0, False, None, 14]
>>> print(magic_count(list))
5
Je sais que ce n'est pas Python comportement normal, mais comment puis-je remplacer Python comportement?
Ce que j'ai essayé
Jusqu'à présent, j'ai fondé les gens ce qui suggère que a if a is not None else "too bad"
, mais il ne fonctionne pas.
J'ai aussi essayé de isinstance
, mais avec pas de chance.
InformationsquelleAutor Hrabal | 2015-04-02
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser
sum
de vérifier si chaque objetis not None
qui seraTrue
ouFalse
donc 1 ou 0.Ou à l'aide de
filter
avec python2:Avec python3 il est
None.__ne__()
qui ignore Aucun de filtre et sans la nécessité pour un lambda.L'avantage de
sum
est-il paresseusement évalue un élément à la fois au lieu de créer une liste de valeurs.Sur une note de côté évitez d'utiliser
list
comme un nom de variable comme les ombres du pythonlist
.TypeError: object of type 'filter' has no len()
Deux façons:
Avec une expression de liste
Deux, compter les Nvos et soustraire de la longueur:
None
.False
à zéro. (Qui a fait l'éloge, pas une correction 😉J'ai récemment publié une bibliothèque contenant une fonction
iteration_utilities.count_items
(ok, en fait 3 parce que j'ai aussi utiliser les helpersis_None
etis_not_None
) à cet effet:Utiliser numpy