por que max () está imprimindo com a quantidade errada? [duplicado]

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

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

Produto: 7

por que a saída é 7 e não 8?

quando eu modifico a declaração de impressão para:

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

funciona. Eu não entendo porque. Espero que alguém possa me ajudar.

obrigado

Respostas

1 SneakyTurtle Dec 23 2020 at 00:44

Por padrão, a função max retorna a string com o valor mais alto, ordenada alfabeticamente. Que são "laranjas", cujo comprimento é 8.

Quando você fornece a chave como um segundo parâmetro, ele compara as sequências por seu comprimento e não em ordem alfabética.

FrankBlack78 Dec 23 2020 at 00:40

Porque max (list [0]) é igual a 'laranjas' e len ('laranjas') é igual a 7.