Max()函数在Python 3.4中没有返回最大值

时间:2015-05-23 21:42:50

标签: python python-3.x max

为什么Python 3.4中的max()函数在值列表中给出的值小于预期值?

示例1 ,其中预期值为'marco'

>>> max('zara', 'marco')
'zara'

示例2 ,其中预期值为'cherries'

>>> max('apples', 'oranges', 'cherries', 'banana')
'oranges'

4 个答案:

答案 0 :(得分:10)

字符串按lexicographically排序,而不是按大小排序。

  • zara是'最大',因为它是排序顺序中的最后一个,在marco之后:

    >>> 'zara' > 'marco'
    True
    >>> sorted(['zara', 'marco'])
    ['marco', 'zara']
    
  • oranges来自applesbananacherries

    >>> 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 这是您的排序会在英语词典中看到单词。

因此,在您的情况下,zaraoranges位于字典的最后,因此是max()值。

答案 2 :(得分:0)

当您比较' zare'时,将以ASCII顺序比较max()中的字符串。和' marco',ACSII中z的值是122,m的值是109,因此zara大于marco。如果第一个字母的值相等,则会比较同伴字母,直到字符串相等(相同的字符串)或其中一个字符串大于其他字符串。

答案 3 :(得分:0)

max使用sort函数,并按字母顺序给出最后一个单词。如果你想要最长的单词,你需要做[len(" zacra"),len(" macros")....]