是否有一个函数式编程习惯用于将列表过滤为真实和谬误?

per*_*iae 7 python functional-programming filter

假设您有一些列表,L并且您希望根据某些布尔函数将其拆分为两个列表P.也就是说,你想要的所有元素的一个列表l,其中P(l)是真实的,另一个列表,P(l)是假的.

我可以在Python中实现这一点,如下所示:

def multifilter(pred,seq):
    trues,falses = [],[]
    for x in seq:
        if pred(x):
            trues.append(x)
        else:
            falses.append(x)
    return trues,falses
Run Code Online (Sandbox Code Playgroud)

我的问题:是否有一个函数式编程习惯用来完成这个?

Ale*_*x B 8

来自itertools的例子:

from itertools import tee, filterfalse
def partition(pred, iterable):
    t1, t2 = tee(iterable)
    return filterfalse(pred, t1), filter(pred, t2)
Run Code Online (Sandbox Code Playgroud)