所以这就是我想到的。我定义了一个函数来计算列表中的最大元素,而第二个函数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()
函数实现了map higher-order function,为mylist
中的输入生成一系列myfunc()
结果。当映射时,所使用的函数应该是一个单一的输入,并且每个输入都是独立处理的,并且结果输出序列是按照与产生它们的输入相同的顺序给出的。在higher-order reduce operation将产生一个单个输出。reduce意味着您迭代地从前面的reduce操作获取输出,并与下一个输入值一起调用该函数以生成下一个输出。因此,函数需要两个输入,reduce操作才能正常工作。对于第一步,如果没有前面的输出,您可以从一个固定的起始值开始,或者从输入列表中获取两个输入。随着每一步产生新的输出,先前的输出被丢弃。最后只有一个输出。在
使用reduce生成
[1, 2, 3]
的最大值可以从两个输入开始,并使用一个简单的函数来确定这两个输入的最大值。然后,该过程将执行以下步骤:您的reduce实现必须执行相同的操作:
Python3将其实现为^{} ,文档实际上附带了一个可以直接复制的纯Python实现。在
相关问题 更多 >
编程相关推荐