根据条件删除列表元素
- 2025-03-20 08:47:00
- admin 原创
- 48
问题描述:
我有一个清单:[word, good freq, bad freq, change_status]
list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0],['change', 1, 2, 2]]
我想从列表中删除所有不满足条件的元素。
所以如果change_status > 0.3 and bad_freq < 5
那么我想删除与之对应的元素。
因此 list_1 将被修改为,
list_1 = [['good',100, 20, 0.2],['bad', 10, 0, 0.0]]
我该如何选择性地做到这一点?
解决方案 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]
如果您愿意,您也可以将其用于if not (item[2] < 5 and item[3] < 0.3)
条件。
解决方案 2:
filter
与适当的功能一起使用该功能。
list_1 = filter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
演示:
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]]
请注意,即使您在问题中这样说,good也不能满足您的条件(是错误的)!20 < 5
如果您有许多元素,您可能需要使用 itertools 中的等效函数:
from itertools import ifilter
filtered = ifilter(lambda x: x[3] <= 0.3 and x[2] < 5, list_1)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD