为什么Python 3.4中的max()
函数在值列表中给出的值小于预期值?
示例1 ,其中预期值为'marco'
:
>>> max('zara', 'marco')
'zara'
示例2 ,其中预期值为'cherries'
:
>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'
答案 0 :(得分:10)
字符串按lexicographically排序,而不是按大小排序。
zara
是'最大',因为它是排序顺序中的最后一个,在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'
答案 1 :(得分:1)
max
适用于数字,字符串和其他类型,但是使用字符串只需查看字符串的大小就无法使用 - 它使用 Lexical Ordering 这是您的排序会在英语词典中看到单词。
因此,在您的情况下,zara
和oranges
位于字典的最后,因此是max()
值。
答案 2 :(得分:0)
当您比较' zare'时,将以ASCII顺序比较max()中的字符串。和' marco',ACSII中z的值是122,m的值是109,因此zara大于marco。如果第一个字母的值相等,则会比较同伴字母,直到字符串相等(相同的字符串)或其中一个字符串大于其他字符串。
答案 3 :(得分:0)
max使用sort函数,并按字母顺序给出最后一个单词。如果你想要最长的单词,你需要做[len(" zacra"),len(" macros")....]