eliminar Ninguno valor de una lista sin eliminar el valor 0
Esta fue mi fuente con la que comencé.
Mi lista
L = [0, 23, 234, 89, None, 0, 35, 9]
Cuando ejecuto esto:
L = filter(None, L)
obtengo estos resultados
[23, 234, 89, 35, 9]
Pero esto no es lo que necesito, lo que realmente necesito es:
[0, 23, 234, 89, 0, 35, 9]
Porque estoy calculando el percentil de los datos y el 0 hace mucha diferencia.
¿Cómo eliminar el valor Ninguno de una lista sin eliminar el valor 0?
Aceptado
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> [x for x in L if x is not None]
[0, 23, 234, 89, 0, 35, 9]
Solo por diversión, así es como puedes adaptarte filter
para hacer esto sin usar un lambda
(no recomendaría este código, es solo para fines científicos)
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(partial(is_not, None), L))
[0, 23, 234, 89, 0, 35, 9]
Una lista de comprensión es probablemente la forma más clara:
>>> L = [0, 23, 234, 89, None, 0, 35, 9
>>> [x for x in L if x is not None]
[0, 23, 234, 89, 0, 35, 9]
También existe un enfoque de programación funcional , pero es más complicado:
>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(partial(is_not, None), L))
[0, 23, 234, 89, 0, 35, 9]