Max() 函数没有 return Python 中的最大值 3.4
Max() function does not return largest value in Python 3.4
为什么 Python 3.4 中的 max()
函数给我的值小于值列表中的预期值?
示例 1,其中预期值为 'marco'
:
>>> max('zara', 'marco')
'zara'
示例 2,其中预期值为 'cherries'
:
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
字符串按 lexicographically 排序,而不是按大小排序。
zara
是 'biggest' 因为它在排序顺序中排在最后,在 marco
:
之后
>>> 'zara' > 'marco'
True
>>> sorted(['zara', 'marco'])
['marco', 'zara']
oranges
在 apples
、banana
和 cherries
.
之后
>>> sorted(['apples', 'oranges', 'cherries', 'banana'])
['apples', 'banana', 'cherries', 'oranges']
如果你想要最长的字符串,你需要告诉max()
使用它作为键:
max(sequence, key=len)
演示:
>>> max('zara', 'marco')
'zara'
>>> max('zara', 'marco', key=len)
'marco'
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
>>> max('apples', 'oranges', 'cherries', 'banana', key=len)
'cherries'
max
适用于数字、字符串和其他类型,但是对于字符串,仅通过查看字符串的大小是行不通的 - 它使用 词法排序 这是您在英语词典中看到的单词顺序。
所以在你的情况下 zara
和 oranges
在字典中排在最后,因此是 max()
值。
max()中的字符串会按ASCII顺序进行比较,当你比较'zare'和'marco'时,z在ACSII中的值为122,m的值为109,因此zara大于马可。如果第一个字母的值相等,则将比较其他字母,直到字符串相等(相同的字符串)或一个字符串大于其他字符串。
max 使用排序功能,并会按字母顺序为您提供最后一个单词。如果你想要最长的单词,你需要做 [len("zacra"), len("macros").....]
为什么 Python 3.4 中的 max()
函数给我的值小于值列表中的预期值?
示例 1,其中预期值为 'marco'
:
>>> max('zara', 'marco')
'zara'
示例 2,其中预期值为 'cherries'
:
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
字符串按 lexicographically 排序,而不是按大小排序。
之后zara
是 'biggest' 因为它在排序顺序中排在最后,在marco
:>>> 'zara' > 'marco' True >>> sorted(['zara', 'marco']) ['marco', 'zara']
之后oranges
在apples
、banana
和cherries
.>>> sorted(['apples', 'oranges', 'cherries', 'banana']) ['apples', 'banana', 'cherries', 'oranges']
如果你想要最长的字符串,你需要告诉max()
使用它作为键:
max(sequence, key=len)
演示:
>>> max('zara', 'marco')
'zara'
>>> max('zara', 'marco', key=len)
'marco'
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
>>> max('apples', 'oranges', 'cherries', 'banana', key=len)
'cherries'
max
适用于数字、字符串和其他类型,但是对于字符串,仅通过查看字符串的大小是行不通的 - 它使用 词法排序 这是您在英语词典中看到的单词顺序。
所以在你的情况下 zara
和 oranges
在字典中排在最后,因此是 max()
值。
max()中的字符串会按ASCII顺序进行比较,当你比较'zare'和'marco'时,z在ACSII中的值为122,m的值为109,因此zara大于马可。如果第一个字母的值相等,则将比较其他字母,直到字符串相等(相同的字符串)或一个字符串大于其他字符串。
max 使用排序功能,并会按字母顺序为您提供最后一个单词。如果你想要最长的单词,你需要做 [len("zacra"), len("macros").....]