Python functools.reduce,如何减少列表并返回一个新列表

标签 python lambda reduce fold

回答一个问题时,我注意到我不知道如何在reduce中执行append后返回列表,例如

import functools

futures = [1,2,3]
records = functools.reduce((lambda res, future: res if (res.append(str(future))  == None) else res), futures, [])

我想要列表['1', '2', '3'],这只是一个最小的例子,因为我想做的不仅仅是映射值。

如果我将其放入 lambda 中,还有另一种方法会变得如此可怕吗?

最佳答案

您不必改变 lambda 中的结果列表; reduce 将函数的返回值作为结果。所以你的 lambda 可以很简单

lambda res, future: res+[str(future)]

关于Python functools.reduce,如何减少列表并返回一个新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443473/

相关文章:

java - 使用 Spark 检测大型数据集中的重复连续值

javascript - Array.reduce如何将函数作为函数组合中的参数?

Python-尝试为循环内的列表项分配值时列表分配索引超出范围

python - 两个大圆的交点(纬度/经度)

PYTHON 2.6 XML.ETREE 输出属性的单引号而不是双引号

java - 是否可以在 lambda 表达式中迭代数组? (java)

python - 需要将 lambda 函数(python)加入 YAML 中的 CloudFormation 模板,我怎样才能实现这一点?

python - 使用字典、RobotFramework 时 Evaluate 和 SetVariable 之间的区别

c++ - 如何将 lambda 传递给 lambda?

json - reduce 函数正在打印一个空字典 [ :]