Python 基于条件删除列表元素

Python 基于条件删除列表元素,python,list,elements,Python,List,Elements,我有一个列表:[word,good freq,bad freq,change\u status] list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0],['change', 1, 2, 2]] 我想从列表中删除所有不满足条件的元素 因此,如果change\u status>0.3和bad\u freq

我有一个列表:
[word,good freq,bad freq,change\u status]

list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0],['change', 1, 2, 2]]
我想从列表中删除所有不满足条件的元素

因此,如果
change\u status>0.3和bad\u freq<5
,那么我想删除与之对应的元素

因此列表_1将被修改为

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

如何进行选择?

过滤器功能与适当的功能一起使用

list_1 = filter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
list_1=过滤器(λx:x[3]

如果不满足条件,也可以使用
(第[2]<5项和第[3]<0.3项)

他编辑的问题与该不等式不匹配,只能对内置函数使用过滤器,否则使用列表理解。“只对内置函数使用过滤器”-有什么原因吗?因为列表理解比lambda上的过滤器读得好,而且通常性能也更好。lambda的开销相当高。如果性能很重要,并且有适当的内置功能(通常来自操作员模块),则内置的过滤器有时会比等效的列表理解更快。他想要删除满足这些条件的元素,您需要将其反转(我犯了同样的错误)我想他第一句的意思是
。但实际上你的评论是错误的。
x
x
a一起导致
x
,而不是你说的
x
。我得到
好的
改变
好的
坏的
对于那些情况--
坏的
s
bad\u freq
0
,它的
change\u status
0.0
。比带有
lambda
filter
savinos的
filter
更具pythonic性见我对ThiefMaster回答的评论。列表理解通常被认为更具pythonic,特别是在
map
filter
的时候d需要一个
lambda
,而不仅仅是一个内置的。
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]]
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]