python - 是否有用于将列表过滤为真和假的函数式编程习惯用法?

标签 python functional-programming filter

假设您有一些列表 L,并且您希望根据一些 bool 函数 P 将它分成两个列表。也就是说,您需要一个包含所有元素 l 的列表,其中 P(l) 为 true,另一个列表中 P(l) 为 false .

我可以像这样在 Python 中实现它:

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

我的问题:是否有函数式编程惯用语可以完成此任务?

最佳答案

来自 itertools 示例:

from itertools import tee, filterfalse
def partition(pred, iterable):
    t1, t2 = tee(iterable)
    return filterfalse(pred, t1), filter(pred, t2)

关于python - 是否有用于将列表过滤为真和假的函数式编程习惯用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697556/

相关文章:

python - 为什么文件可写但 os.access( file, os.W_OK ) 返回 false?

python - 在 Python 中存储字典路径

python - 将嵌套字典展平为键 :value pair 列表

Haskell:警告 "Variable is implicitly quantified due to a context"是什么意思?

javascript - JS 过滤器 item[key] 是什么?

python - 将整数中的奇数位相加

functional-programming - 是否有一种不那么冗长的方式来解开 Elm 中的值

data-structures - 有没有一个高效的多索引索引持久化数据结构

swift - 在 Realm 中按日期组件过滤

exception - AdBlock:如何阻止 example.com 和 example.com/index 但不阻止所有其他 example.com/*