列表的最大值(字符串项)

2024-04-29 06:23:40 发布

您现在位置:Python中文网/ 问答频道 /正文

Heroes =['Superman','Batman','Dudley Do-Right','Luke Skywalker']
max(Heroes)
'Superman'

有人能解释一下为什么上面的结果是“超人”而不是“达德利做对了”?你知道吗

len(Heroes[0])是8

len(Heroes[2])是15

我很困惑。你知道吗


Tags: rightlendomaxlukeskywalkerheroesbatman
1条回答
网友
1楼 · 发布于 2024-04-29 06:23:40

字符串是按字典顺序进行比较的,而不是按长度。S在字母表中位于D之后:

>>> 'Superman' > 'Dudley Do-Right'
True

复制max()功能的一种低效方法是对输入序列进行排序,然后为结果选取最后一个值。所以[20, 10, 8, 15],排序时,把20放在最后,这就是max()返回的结果。对Heroes中的字符串进行排序会导致Superman列在最后。你知道吗

如果要查找最长的字符串,请使用^{} argument to ^{}

max(Heroes, key=len)

这里,不是直接比较Heroes中的值,max()通过key参数的返回值来比较值;现在len()返回最大值的值作为最大值返回。你知道吗

演示:

>>> Heroes = ['Superman', 'Batman', 'Dudley Do-Right', 'Luke Skywalker']
>>> max(Heroes, key=len)
'Dudley Do-Right'

相关问题 更多 >