【问题标题】:I am trying to create a reduce function but when I need to call the function I don't understand what the first argument should be我正在尝试创建一个 reduce 函数,但是当我需要调用该函数时,我不明白第一个参数应该是什么
【发布时间】:2020-08-26 18:03:39
【问题描述】:
def myreduce(anyfunc, sequence):

    result = sequence[0]
    for item in sequence[1:]:
        result = anyfunc(result, item)
    return result

myreduce(,[1,2,3,4])

【问题讨论】:

  • 第一个参数应该是一个以某种方式组合列表元素的函数。

标签: python function reduce


【解决方案1】:

第一个参数应该是被归约的函数。例如,如果你想对所有列表元素求和,它应该是一个将两个参数相加的函数。

myreduce(lambda x, y: x + y, [1, 2, 3, 4])

如果你不想要一个 lambda,定义一个命名函数:

def add(x, y):
    return x + y

myreduce(add, [1, 2, 3, 4])

【讨论】:

  • 我试图避免使用 lambda 函数,但感谢您的帮助
  • 你也可以使用命名函数,我已经更新了答案。
【解决方案2】:

要访问运算符(*、+、//、/、& 等)的语法,您需要运算符库。例如,您似乎想编写类似“myreduce(*,[1,2,3,4])" 的内容来使用列表中的多重运算符。这是在操作员模块中。

import operator

myreduce(operator.mul,[1,2,3,4])

当然,你刚才写的函数是functools模块中已经写好的函数。

from functools import reduce
import operator

reduce(operator.add,[1,2,3,4,5])

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2022-01-04
    • 1970-01-01
    • 2021-12-19
    • 2020-09-29
    • 2019-09-18
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多