dlaczego max () drukuje niewłaściwą kwotę? [duplikować]

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

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

Wyjście: 7

dlaczego na wyjściu jest 7, a nie 8?

kiedy zmodyfikuję instrukcję print na:

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

to działa. Nie rozumiem dlaczego. Mam nadzieję, że ktoś może mi pomóc.

dzięki

Odpowiedzi

1 SneakyTurtle Dec 23 2020 at 00:44

Domyślnie funkcja max zwraca ciąg o najwyższej wartości, uporządkowany alfabetycznie. Co to są „pomarańcze”, których długość wynosi 8.

Gdy podasz klucz jako drugi parametr, porównuje on ciągi według ich długości, a nie alfabetycznie.

FrankBlack78 Dec 23 2020 at 00:40

Ponieważ max (lista [0]) to „pomarańcze”, a len („pomarańcze”) równa się 7.