我得到了一个任务,就是用lambda函数在列表中找到最大值。我必须在一个lambda函数中使用lambda和一个具有两个参数的函数。在
我知道如何通过定义函数来执行任务,但不知道如何将其转换为lambda函数。在
myList = [1,2,3,4,5,6,7,8,9,10]
#Here I can find the max value by defining a function
def maxVal(list_a):
max = 0
for i in list_a:
if i > max:
max = i
return max
print(maxVal(myList))
#Here I attempt to use a lambda function to find the max value
maxMyList = map(lambda x,y: x[0] >= y[0], myList, myList)
print(maxMyList(myList,myList))
编辑:很抱歉,因为这是我第一次在这里发帖。为了清楚起见,我不能定义任何在这个程序中使用的函数。我只想发布定义函数maxVal的代码,以表明我理解我需要做什么的逻辑。谢谢你的回复,我真的很感激!在
你处理这件事的方式真的没有错。您只需以正确的方式将lambda合并到其余代码中:
结果:
^{pr2}$我确实需要更改调用
return max
的级别。我不知道这是一个逻辑错误,还是仅仅是一个转录错误,当你把你的代码放入一个S.O.问题。还请注意,我将10移到输入数据的另一个位置,以确保它不必在最后才被发现是最大值。在如果你想要一个“更酷”和更现代的答案,
reduce
真的是专为做你想做的事而设计的。这里有一个简单的解决方案。在结果:
^{pr2}$还请注意,“max”本身是一个接受两个参数的函数,因此您可以直接使用它来获得非常简单的结果……在指定使用lambda的情况下,这并不适用:
这些等同于写循环的函数非常流行,这是有原因的。当结合以流的方式处理数据时,这是一个非常强大的想法。随着它越来越受欢迎,我认为它会被认为更具可读性。作为一个老前辈,我刚刚开始接受所有这些函数/流编程……更多的是用Java而不是Python,但仍然如此。这是一套功能强大的工具,有助于您真正理解。在
您可以定义一个函数,该函数将一个列表作为第一个参数,可选地将当前最大值作为第二个参数,并且如果列表中的第一个项大于当前最大值或当前最大值为
None
,则递归地调用它自己,并将列表的其余部分作为第一个参数,直到列表的其余部分为空,此时返回当前最大值:因此:
^{pr2}$输出:
10
Python有一个用于排序列表的内置函数。它是
sorted()
例如:
sorted([2, 8, 8, 3, 7, 4, 2, 93, 1])
=[1, 2, 2, 3, 4, 7, 8, 8, 93]
我们可以使用下标
[::-1]
来反转列表,因此完成的lambda函数是:相关问题 更多 >
编程相关推荐