python - tablas - Eliminar elementos de la lista en función de la condición
read text pandas python (2)
Tengo una lista de listas: [word, good freq, bad freq, change_status]
list_1 = [[''good'',100, 20, 0.2],[''bad'', 10, 0, 0.0],[''change'', 1, 2, 2]]
Me gustaría eliminar de la lista todos los elementos que no cumplan una condición.
Por lo tanto, si change_status > 0.3 and bad_freq < 5
, me gustaría eliminar los elementos correspondientes.
Entonces la lista_1 sería modificada como,
list_1 = [[''good'',100, 20, 0.2],[''bad'', 10, 0, 0.0]]
¿Cómo hago selectivamente eso?
Utilice la función de filter
con una función adecuada.
list_1 = filter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
Manifestación:
In [1]: list_1 = [[''good'',100, 20, 0.2],[''bad'', 10, 0, 0.0],[''change'', 1, 2, 2]]
In [2]: filter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
Out[2]: [[''bad'', 10, 0, 0.0]]
¡Tenga en cuenta que el bien no satisface su condición ( 20 < 5
es falso) aunque lo haya dicho en su pregunta!
Si tiene muchos elementos, puede usar la función equivalente de itertools:
from itertools import ifilter
filtered = ifilter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
list_1 = [[''good'',100, 20, 0.2],[''bad'', 10, 0, 0.0],[''change'', 1, 2, 2]]
list_1 = [item for item in list_1 if item[2] >= 5 or item[3] >= 0.3]
También puede usar if not (item[2] < 5 and item[3] < 0.3)
para la condición si lo desea.