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.