Python中的reduce函数:将累加器作为参数传递

3
根据这个SO线程,reduce相当于fold。然而,在Haskell中,accum参数也会传递到fold中。在Python中,传递累加器的方法是什么呢?
my_func(accum, list_elem):
     if list_elem > 5:
       return accum and True # or just accum
     return accum and False # or just False

reduce(my_func, my_list)

在这里,我想将True作为累加器传递。在Python中传递初始累加器值的方法是什么。


2
reduce 接受累加器作为第三个参数。 - 301_Moved_Permanently
谢谢。希望我没错过。这似乎是一个答案。 - doptimusprime
我无法理解,因为许多示例没有使用第三个参数。 - doptimusprime
1个回答

5
根据文档reduce函数可以接受第三个可选参数作为累加器的初始值。
你可以这样写:
def my_func(acc, elem):
    return acc and elem > 5

reduce(my_func, my_list, True)

或者,使用lambda:

reduce(lambda a,e: a and e > 5, my_list, True)

另外,对于这个特定的例子,如果你想检查数字 5 是否严格小于 my_list 中的所有元素,你可以使用以下代码:

greater_than_five = (5).__lt__
all(greater_than_five, my_list)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接