python - 将函数列表应用于单个变量

标签 python

我将三个过滤器应用到单个数据结构,该数据结构一个接一个地保存我的数据。我可以更巧妙地做到这一点吗?就像对封装三个过滤器的类的单个调用或将它从一个过滤器传递到另一个过滤器(更像是一个协程)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/

相关文章:

python - Pandas df.sum() 只创建 0

python - 将行附加到 Pandas 中的组

Java - 用户输入 - 错误循环

python - 无法从其他文件夹导入脚本

python - Jinja2 If 语句

python - 遍历嵌套字典

python - 深度Q-网络(DQN)学习游戏2048没有提高

python - 绘制直方图

python - 仅为python中的所有对象创建一个pexpect session

python - 带有 PK 的 Django REST POST 到 HyperlinkedModelSerializer,如何将 PK 转换为 URL?