我将三个过滤器应用到单个数据结构,该数据结构一个接一个地保存我的数据。我可以更巧妙地做到这一点吗?就像对封装三个过滤器的类的单个调用或将它从一个过滤器传递到另一个过滤器(更像是一个协程)latter看起来相当可怕,所以我可以用以前的范例巧妙地做到这一点吗?
例子, data_list 保存我的数据
def _filter1(elem):
return elem < 0
def _filter2(element):
...
def _filter3(element):
...
list = filter(_filter1,list)
list = filter(_filter2,list)
list = filter(_filter3,list)
我想这是最简单的表达方式:
filters = [_filter1, _filter2, _filter3]
list = apply_filters(*filters)
谢谢。
最佳答案
您可以使用 functools.reduce
来完成:
from functools import reduce
list = reduce(lambda acc, pred: filter(pred, acc), filters, list)
关于python - 将函数列表应用于单个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818614/