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

时间:2017-06-08 18:50:46

标签: python lambda reduce fold

回答一个问题我注意到我不知道如何在减少内容后添加列表,例如

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中,还有另一种可怕方式吗?

1 个答案:

答案 0 :(得分:3)

您不必在lambda中 mutate 结果列表; reduce将函数的返回值作为结果。所以你的lambda可以像

一样简单
lambda res, future: res+[str(future)]