l=[None,None]
¿Hay alguna función que compruebe si la lista l contiene solo None o no?cómo comprobar si la lista contiene solo None en python
l=[None,None]
¿Hay alguna función que compruebe si la lista l contiene solo None o no?cómo comprobar si la lista contiene solo None en python
Si usted quiere decir, para comprobar si la lista l
contiene sólo Ninguno,
if all(x is None for x in l):
...
"... contiene solo Ninguno" O está vacío. – Constantin
@system: ¿Por qué no? – kennytm
@systempuntoout, esta es en realidad una expresión de generador. – Constantin
Pruebe any()
- comprueba si hay un solo elemento en la lista que se considera True
en un contexto booleano. None
evalúa a False
en un contexto booleano, por lo que any(l)
se convierte en False
.
Tenga en cuenta que, para comprobar si una lista (y no su contenido) es realmente None
, debe utilizarse if l is None
. Y if not l
para verificar si es Ninguno (o cualquier otra cosa que se considere False
) o está vacío.
>>> any ([None, None, 0]) dará False –
¿Cómo llegué tan lejos sin escuchar '(any)? Asombroso. – otocan
L == [None] * len(L)
es mucho más rápido que el uso de todos() cuando L es todos ninguna
$ 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 desea verificar si los miembros de la lista son Ninguno, puede recorrer los elementos y verificar si son Ninguno
Si desea comprobar si la lista en sí es Ninguno, puede utilizar el tipo (lista de variables) y volverá Ninguno
que puede hacer
si (LST == Ninguno): ... print "sí"
funciona.
yo personalmente prefiero hacer una set
y luego verificar si es igual a un conjunto con un elemento None
:
set(l) == {None}
assert set([None, None, None]) == {None}
assert set([None, 2, None]) != {None}
No es el más rápido, pero aún más rápido que el all(...)
aplicación:
$ 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
gracias a @JohnLaRooy por el código de referencia –
Lo ¿Debería regresar para la lista vacía '[]'? – Constantin
posible duplicado de [¿Cómo comprobar si todos los elementos de la lista son Ninguno?] (Http://stackoverflow.com/questions/6518394/how-to-check-if-all-items-in-the-list-are -none) –
posible duplicado de [forma más concisa para comprobar si una lista está vacía o \ [None \]?] (http://stackoverflow.com/questions/1270920/most-concise-way-to-check-whether -a-list-is-empty-or-none) – ThiefMaster