python key=lambda函数_使用’key’和lambda表达式的python max函数

我来自OOP背景,尝试学习Python。我使用的是max函数,该函数使用lambda表达式返回Player类型的实例,其中players列表中的totalScore最大。

def winner():

w = max(players, key=lambda p: p.totalScore)

函数正确返回具有最大totalScore的Player类型的实例。我对以下三件事感到困惑:

max功能如何工作?它的论点是什么?我看了文件,但不明白。

关键字key在max函数中的用途是什么?我知道它也用于sort函数的上下文中。

lambda表达式的含义?如何阅读?它们是如何工作的?

这些都是非常不寻常的概念性问题,但会帮助我理解语言。如果你能举出一些例子来解释,那会有帮助的。谢谢

哪个python版本?

你查阅过文件吗?

@charmlesscoin python 2.7.5版

@Inbarrose我检查了max函数的文档。不太明白。

@Inbarrose这个页面现在实际上是谷歌在python max lambda上的头号搜索结果,可能实际上对新用户更有帮助。

lambda是一个匿名函数,相当于:

def func(p):

return p.totalScore

现在,max变为:

max(players, key=func)

但是,由于def语句是复合语句,因此不能在需要表达式的地方使用它们,这就是为什么有时使用lambda语句的原因。

注意,lambda相当于你在def的返回声明中所做的。因此,不能在lambda中使用语句,只允许使用表达式。

max是做什么的?

max(a, b, c, ...[, key=func]) -> value

With a single iterable argument, return its largest item. With two or

more arguments, return the largest argument.

所以,它只返回最大的对象。

key是如何工作的?

默认情况下,在python2中,key根据一组基于对象类型的规则比较项(例如,字符串总是大于整数)。

要在比较之前修改对象,或者根据特定的属性/索引进行比较,必须使用key参数。

例1:

一个简单的例子,假设您有一个字符串形式的数字列表,但是您希望通过它们的整数值来比较这些项目。

>>> lis = ['1', '100', '111', '2']

这里,max使用其原始值比较项目(按字典方式比较字符串

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值