Deleting list elements based on condition

Zenvega picture Zenvega · Oct 2, 2011 · Viewed 64.7k times · Source

I have a list of lists: [word, good freq, bad freq, change_status]

list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0],['change', 1, 2, 2]]

I would like to delete from the list all elements which don't satisfy a condition.

So if change_status > 0.3 and bad_freq < 5 then I would like to delete that the elements corresponding to it.

So the list_1 would be modified as,

list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0]]

How do I selective do that?

Answer

agf picture agf · Oct 2, 2011
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]

You can also use if not (item[2] < 5 and item[3] < 0.3) for the condition if you want.