lambda的两个以下定义之间有什么区别?

时间:2016-07-14 14:32:25

标签: python

我看到了lambda的两个模型,无法使用它们而不是它们。你想:

languages = ["HTML", "JavaScript", "Python", "Ruby"]
print max(lambda x:x=="Python", languages)

你可以看到它是以lambda然后x:x开头的,最后是list(y)的名字。假设如下:

languages = ["HTML", "JavaScript", "Python", "Ruby"]
print max(languages,key=lambda x:x=="Python" )

我在一个例子中找到了。在这一个参数中,一个参数与lambda相等,list的名称在开头,并且它与第一个相同。有两种不同的定义吗? 感谢

2 个答案:

答案 0 :(得分:0)

来自docs

过滤器采用功能可迭代(列表) [即filter(function, iterable)]

您正在传递lambda(lambda x:x=="Python")作为第一个参数。

Max 采用可迭代和(在本例中)单个参数'key'功能 [即max(iterable[, key])]

您正在传递lambda(lambda student: student.score)作为第二个命名的关键参数。

你的lambda都是相同的lambda语法。也许您感到困惑,因为第二个使用关键字参数(key=...)将lambda传递给函数?

答案 1 :(得分:0)

我回答。这些是旧版本,不能接受3到3以上的paython。它可以使用如下:

squares=[x**2 for x in range(1,11)]
c=max(filter(lambda x: x>=30 and x<=70,squares))
print (squares)

print (c)

f=[1,2,3,4,5,6,7,8,9]
print(list(filter(lambda x:x%2==0,f)))
print(max(filter(lambda x:x%2==0,f)))

你的知识已经过时了。