【发布时间】:2017-01-17 22:29:51
【问题描述】:
在 Ruby 中,我习惯于使用 Enumerable#inject 来遍历列表或其他结构,然后返回一些关于它的结论。例如,
[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}
判断数组中的每个元素是否都是奇数。在 Python 中完成同样事情的合适方法是什么?
【问题讨论】:
标签: python functional-programming
在 Ruby 中,我习惯于使用 Enumerable#inject 来遍历列表或其他结构,然后返回一些关于它的结论。例如,
[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}
判断数组中的每个元素是否都是奇数。在 Python 中完成同样事情的合适方法是什么?
【问题讨论】:
标签: python functional-programming
【讨论】:
reduce() 已移至 Python 3 中的 functools.reduce()。
听起来像 Python 中的 reduce 或 Haskell 中的 fold(r|l)'?'。
reduce(lambda x, y: x and y % == 1, [1, 3, 5])
【讨论】:
我认为您可能想要使用all,它不如inject 通用。不过,reduce 是 Python 中的 inject 等价物。
all(n % 2 == 1 for n in [1, 3, 5, 7])
【讨论】: