如何通过模仿Python中的reduce函数来查找列表中的最大整数?

如何通过模仿Python中的reduce函数来查找列表中的最大整数?,python,list,integer,max,reduce,Python,List,Integer,Max,Reduce,这就是我想到的。我定义了一个函数来计算列表中的最大元素,而第二个函数myreduce不起作用 我不明白为什么我的逻辑有缺陷。我是编程新手。帮忙 def maxoflist(l): #function to compute the maximum element in a list maxi=l[0] for i in l: if i>maxi: maxi=i return maxi def myreduce(my

这就是我想到的。我定义了一个函数来计算列表中的最大元素,而第二个函数
myreduce
不起作用

我不明白为什么我的逻辑有缺陷。我是编程新手。帮忙

def maxoflist(l):       #function to compute the maximum element in a list
    maxi=l[0]
    for i in l:
        if i>maxi:
            maxi=i
    return maxi

def myreduce(myfunc,mylist): #this is where I'm trying to mimic the 
    res=[]                   #reduce function
    for i in mylist:
        res.append(myfunc(i))          
    return res
l=[1,2,3]
print(list(myreduce(maxoflist,l)))

您没有实现reduce函数。而您的
myreduce()
函数将实现,为
mylist
中的输入生成一系列
myfunc()
结果。映射时,所使用的函数应采用单个输入,每个输入都独立处理,结果输出序列的顺序与产生它们的输入相同

这将产生一个单一的输出。reduce意味着您迭代地获取前面reduce操作的输出,并与下一个输入值一起调用该函数以生成下一个输出。因此,该功能需要两个输入,以使reduce操作正常工作。对于第一步,如果没有前面的输出,您可以从一个固定的起始值开始,或者从输入列表中获取两个输入。随着每一步产生新的输出,先前的输出将被丢弃。最后只有一个输出

使用reduce生成
[1,2,3]
的最大值可以从两个输入开始,并使用一个简单的函数确定这两个输入的最大值。然后,该程序将采取以下步骤:

  • 将第一个输入1作为起始“输出”值。如果没有进一步的输入,这将是最终结果
  • 使用上一步的初始输出1和下一个输入值2,并使用这两个值调用函数。1和2的最大值是2,因此这是函数作为第一个输出结果生成的结果
  • 使用上一个操作中的2和下一个输入3再次调用该函数。2和3的最大值是3,这就是函数作为新输出产生的结果
  • 没有更多的输入,输出为3
您的reduce实现也必须执行相同的操作:

  • 从“输出”的给定起始值开始,或从输入列表中获取第一个值
  • 对于输入列表(剩余部分)中的每个值,使用最后的输出和值调用函数,返回值替换输出
  • 处理完所有值后,返回输出

Python3实现了这一点,文档实际上附带了一个可以直接复制的纯Python实现。

您了解
reduce()
函数的功能吗?您的
myreduce()
函数与
reduce()
函数不同。您可以使用内置的
max
函数。您在这里实现了
map()
函数,请参阅查看代码比较。@ShrenikRaj:您阅读了吗?还是你在找那个?非常感谢!这是非常有用的!很高兴能帮上忙!如果您觉得它对您有用,请随时使用。:-)