繁体   English   中英

无法理解python代码中的lambda表达式

[英]Unable to understand the lambda expression in python code

嗨,我有这个Python代码的问题:

def func():
    m=max(d1.values()
    return list(filter(lambda t: t[1]==max(d1.values()), d1.items()))[0][0]

在这里它返回字典的最大值: dic={'a':1, 'b':2 ,'c':3}

我无法理解该表达:

list(filter(lambda t: t[1]==max(d1.values()), d1.items()))[0][0]    

请帮帮我,我是编程新手

谢谢!

筛选器函数正在第二个参数中返回元素的迭代器,对此函数(第一个参数)将返回true(根据文档 )。 第二个参数中的元素被一一传递给函数。

在您的情况下,lambda正在检查传递的d1.items()元素是否等于该值列表中最大元素max(d1.values())

希望这对您有所帮助。

首先,从dict中找到价值最高的项目的代码段应如下所示

dic = {'a':1, 'b':2 ,'c':3}
reduce(lambda x,y: x if x[1] > y[1] else y, dic.iteritems())

说明:

对于过滤器和映射,lambda之后的参数数量为单个,而对于reduce则为2。 所有筛选,映射和归约均期望将可迭代对象作为第二个参数传递

过滤器的一个示例是

list(filter(lambda x: x % 2 == 0, [1, 3, 4, 5, 6]))

在此,迭代发生在列表[1、3、4、5、6]上,每次迭代都会将一个值传递给匿名lambda函数。 另外,在上述情况下,它是X中的拉姆达方法检查X%2 == 0,并返回真/假。 如果为True,则过滤该项目,否则避免该项目并形成另一个列表。 在这种情况下,仅选择偶数值,并消除奇数值。

您可以了解有关lambda的更多信息,并且您可以使用它们的这些功能。 您可以从w3school或hackerrank或其他网站获得问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM