如何在reduce()中引用整个数组?

mae*_*mae 3 python functional-programming

是)我有的:

array = original_array[:]
result = reduce(lambda a,b: some_function(b,array), array)
Run Code Online (Sandbox Code Playgroud)

我想要的是:

我想摆脱array = original_array [:]语句.理想情况下,我只需用original_array [:] 替换reduce()中数组参数,但我也需要在lambda中使用它.有没有办法从lambda中引用 数组参数?

以下是不可接受的解决方案,因为它为每个元素创建一个新的数组副本:

result = reduce(lambda a,b: some_function(b,original_array[:]), original_array[:])
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

result = reduce(lambda a,b: some_function(b,reduce_parameter), original_array[:])
Run Code Online (Sandbox Code Playgroud)

l4m*_*mpi 6

你可以将整个东西包装在另一个lambda中:

result = (lambda array: reduce(lambda a,b: some_function(b,array), array))(original_array[:])
Run Code Online (Sandbox Code Playgroud)

但是我认为你的原始解决方案更可取,因为它更具可读性.

  • +1,因为它可能不可读,但它确实很酷:) (2认同)