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']
    
  • orangesapplesbananacherries.

    之后
    >>> 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 适用于数字、字符串和其他类型,但是对于字符串,仅通过查看字符串的大小是行不通的 - 它使用 词法排序 这是您在英语词典中看到的单词顺序。

所以在你的情况下 zaraoranges 在字典中排在最后,因此是 max() 值。

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

max 使用排序功能,并会按字母顺序为您提供最后一个单词。如果你想要最长的单词,你需要做 [len("zacra"), len("macros").....]