eliminar Ninguno valor de una lista sin eliminar el valor 0

Resuelto mongotop asked hace 11 años • 11 respuestas

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?

mongotop avatar Apr 19 '13 10:04 mongotop
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 filterpara 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]
jamylak avatar Apr 19 '2013 03:04 jamylak

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]
Raymond Hettinger avatar Apr 19 '2013 04:04 Raymond Hettinger