已有184人关注
列表切片
发表在Python图书答疑 2021-12-21 悬赏:1 学分 《Python编程锦囊》第1章 核心基础应用
是否精华
版块置顶:

列表

listcha2=['莱科宁 236','汉密尔顿 158','维泰尔 214','维斯塔潘 216','博塔斯 227']

那么如果打印如下结果

print(max(listcha2,key=lambda x:x[-3:])) # 输出结果为:莱科宁 236

为什么结果会是

莱科宁 236

呢,运行过程能否给解释一下


分享到:
精彩评论 6
kiku
学分:317 LV5
2021-12-21
沙发

lambda是一个匿名函数,参数是x,表达式是x[-3:],即取的是x的倒数第三位到最后的这段字符,key是排序,排序的依据就是刚才取的字符串,max函数取最大值,整体连起来就是取listcha2这个列表里面后三位最大的这个值

zxc61833
学分:6 LV1
2021-12-22
板凳

kiku 发表于2021-12-21 16:49

lambda是一个匿名函数,参数是x,表达式是x[-3:],即取的是x的倒数第三位到最后的这段字符,key是排序,排序的依据就是刚才取的字符串,max函数取最大值,整体连起来就是取listcha2这个列表里面后三位最大的这个值

我认为理论上也是这个结果,但实际运行出来的是第一个,

莱科宁 236

这个怎么解释呢?

无语_mrkj
学分:3155 LV11
2021-12-23
地板

zxc61833 发表于2021-12-22 08:33

我认为理论上也是这个结果,但实际运行出来的是第一个,

莱科宁 236

这个怎么解释呢?

输出第一个是因为第一个元素的值最大。您可以换一下数值试试。

zxc61833
学分:6 LV1
2021-12-24
4L

无语_mrkj 发表于2021-12-23 15:17

输出第一个是因为第一个元素的值最大。您可以换一下数值试试。

我的max里面用了 key = lambda x:x[-3:],这个函数不是应该是倒数第三位至最后一位取最大的吗,也就是应该在

'维泰尔 214','维斯塔潘 216','博塔斯 227'

这里面取最大的,应该取不到

莱科宁 236

才对

kiku
学分:317 LV5
2021-12-27
5L

zxc61833 发表于2021-12-24 10:02

我的max里面用了 key = lambda x:x[-3:],这个函数不是应该是倒数第三位至最后一位取最大的吗,也就是应该在

'维泰尔 214','维斯塔潘 216','博塔斯 227'

这里面取最大的,应该取不到

莱科宁 236

才对

是列表里面的元素作为参数而不是整个列表作为参数,它比较的是每个元素最后三位数值,但它返回的是整个元素

game99258
学分:2266 LV10
2022-08-03
6L

切片元素切的是最大值,默认第一个

首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照