l=[None,None]
Y a-t-il une fonction qui vérifie si la liste l contient uniquement None ou pas?comment vérifier si la liste ne contient que None en python
l=[None,None]
Y a-t-il une fonction qui vérifie si la liste l contient uniquement None ou pas?comment vérifier si la liste ne contient que None en python
Si vous voulez dire, pour vérifier si la liste l
ne contient que Aucun,
if all(x is None for x in l):
...
"... ne contient que None" OU est vide. – Constantin
@system: Pourquoi pas? – kennytm
@systempuntoout, il s'agit en fait d'une expression de générateur. – Constantin
Essayez any()
- il vérifie s'il y a un seul élément dans la liste qui est considéré True
dans un contexte booléen. None
évalue à False
dans un contexte booléen, alors any(l)
devient False
.
Notez que, pour vérifier si une liste (et non son contenu) est vraiment None
, if l is None
doit être utilisé. Et if not l
pour vérifier si c'est soit Aucun (ou toute autre chose qui est considéré False
) ou vide.
>>> any ([Aucun, Aucun, 0]) donnera Faux –
Comment est-ce que je suis allé aussi loin sans avoir entendu parler de 'any()'? Incroyable. – otocan
L == [None] * len(L)
est beaucoup plus rapide que d'utiliser tous() lorsque L est tous Aucun
$ python -m timeit -s'L=[None]*1000' 'all(x is None for x in L)'
1000 loops, best of 3: 276 usec per loop
$ python -m timeit -s'L=[None]*1000' 'L==[None]*len(L)'
10000 loops, best of 3: 34.2 usec per loop
Si vous voulez vérifier si les membres de la liste sont None, vous pouvez faire une boucle sur les éléments et vérifier s'ils sont None
Si vous voulez vérifier si la liste elle-même est None, vous pouvez utiliser le type (varlist) et retournerez Aucun
vous pouvez faire
si (LST == None): ... Imprimer "oui"
fonctionne.
Personnellement, je préfère faire un set
puis vérifier si elle est égale à un ensemble avec un élément None
:
set(l) == {None}
assert set([None, None, None]) == {None}
assert set([None, 2, None]) != {None}
pas le plus rapide, mais encore plus vite que la mise en œuvre all(...)
:
$ python -m timeit -s'L=[None]*1000' 'all(x is None for x in L)'
10000 loops, best of 3: 59 usec per loop
$ python -m timeit -s'L=[None]*1000' 'set(L)=={None}'
100000 loops, best of 3: 17.7 usec per loop
$ python -m timeit -s'L=[None]*1000' 'L==[None]*len(L)'
100000 loops, best of 3: 7.17 usec per loop
grâce à @JohnLaRooy pour le code de référence –
Qu'est-ce que devrait-il revenir à la liste vide '[]'? – Constantin
duplicata possible de [Comment vérifier si tous les éléments de la liste sont None?] (Http://stackoverflow.com/questions/6518394/how-to-check-if-all-items-in-the-list-are -none) –
duplicata possible de [Plus concis façon de vérifier si une liste est vide ou \ [None \]?] (http://stackoverflow.com/questions/1270920/most-concise-way-to-check-whether -a-list-is-empty-or-none) – ThiefMaster