¿Por qué max () imprime la cantidad incorrecta? [duplicar]

Dec 23 2020
list = [['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
         ['dogs', 'cats', 'moose', 'goose']]

print(len(max(list[0])))

Salida: 7

¿Por qué la salida es 7 y no 8?

cuando modifico la declaración de impresión a:

print(len(max(list[0], key = len))) 

funciona. No entiendo por qué. Espero que alguien me pueda ayudar.

Gracias

Respuestas

1 SneakyTurtle Dec 23 2020 at 00:44

De forma predeterminada, la función max devuelve la cadena con el valor más alto, ordenada alfabéticamente. Que es "naranjas", cuya longitud es de 8.

Cuando proporciona la clave como segundo parámetro, compara las cadenas por su longitud y no alfabéticamente.

FrankBlack78 Dec 23 2020 at 00:40

Porque max (lista [0]) es igual a 'naranjas' y len ('naranjas') es igual a 7.