我正在通过脚本流式传输一个非常大的集合,目前在简单调用中使用ifilter
来拒绝某些值,例如:
ifilter(lambda x: x in accept_list, read_records(filename))
这是一个谓词,但现在我想要添加另一个谓词,并且将来可能还想添加其他谓词。直接的方法是嵌套一个ifilter
调用:
ifilter(lambda x : x not in block_list,
ifilter(lambda x: x in accept_list, read_records(filename)))
我考虑将谓词作为未绑定函数放入列表中,并将它们用于此。然而,这些重复的ifilter调用似乎很难实现(并且可能不是最佳选择)。也许我可以构建一个单一的函数来调用所有的谓词,但我该如何尽可能简洁地编写它(同时保持可读性)?