Die Python-Funktion max() liefert das größte Element — entweder aus einem Iterable oder aus mehreren übergebenen Argumenten. Über die optionalen Schlüsselargumente key (Vergleichs-Schlüssel) und default (Rückgabewert für leeres Iterable) lässt sich das Verhalten flexibel an jeden Datentyp anpassen — Zahlen, Strings, Tupel, Objekte.
Einleitung
max() hat zwei Aufruf-Varianten:
- Mit einem Iterable:
max([3, 1, 4])→4 - Mit mehreren Argumenten:
max(3, 1, 4)→4
In beiden Fällen werden die Elemente paarweise mit < verglichen. Die Vergleichsregeln folgen Python-Standard: Zahlen numerisch, Strings lexikografisch, Tupel komponentenweise.
Die key-Funktion erlaubt Custom-Vergleiche: Sie wird auf jedes Element angewendet, das Ergebnis wird verglichen — das Original-Element wird zurückgegeben. Klassisches Pattern für „längstes Wort", „teuerstes Produkt", „neuester Eintrag".
default rettet vor ValueError bei leerem Iterable: max([], default=0) → 0.
Syntax
max(iterable, *, key=None)
max(iterable, *, key=None, default=...)
max(arg1, arg2, *args, key=None)iterable Eine Iterable mit vergleichbaren Elementen.
arg1, arg2, ... Zwei oder mehr direkt übergebene Werte.
key (Optional, Keyword) Einstellige Funktion, deren Rückgabe für den Vergleich genutzt wird.
default (Optional, Keyword — nur bei einem leeren Iterable erlaubt) Rückgabewert für leere Iterables. Ohne default und mit leerer Iterable wirft max() einen ValueError.
Rückgabewert
Das größte Element gemäß <-Vergleich (oder key()-Vergleich). Bei mehreren gleich großen wird das erste zurückgegeben.
Beispiele
Standard
print(max([3, 1, 4, 1, 5, 9, 2, 6]))
print(max(3, 1, 4))
print(max("Hallo Welt")) # größtes Zeichen9
4
oMit key-Funktion
words = ["Apfel", "Birne", "Wassermelone", "Kiwi"]
print(max(words, key=len)) # längstes Wort
print(max(words)) # alphabetisch größtesWassermelone
WassermeloneMit default
leer = []
print(max(leer, default=0))
try:
max(leer)
except ValueError as e:
print(e)0
max() iterable argument is emptyPraktische Beispiele
Teuerstes Produkt finden
products = [
{"name": "Laptop", "preis": 1299},
{"name": "Tastatur", "preis": 89},
{"name": "Monitor", "preis": 449},
]
most_expensive = max(products, key=lambda p: p["preis"])
print(most_expensive){'name': 'Laptop', 'preis': 1299}Häufigstes Element bestimmen
from collections import Counter
words = ["a", "b", "a", "c", "a", "b"]
c = Counter(words)
most_frequent = max(c, key=c.get)
print(most_frequent)aMaximum mit Tupel-Vergleich
# Tupel werden komponentenweise verglichen
entries = [("Alice", 17), ("Bob", 24), ("Cleo", 24)]
# Ältester — bei Gleichstand alphabetisch letzter Name
oldest = max(entries, key=lambda x: (x[1], x[0]))
print(oldest)('Cleo', 24)Praktische Hinweise
max(iter, default=...)ist viel sauberer alsmax(iter) if iter else fallback.- Stabilität: Bei mehreren gleich großen Elementen gewinnt das erste. Wer das letzte will:
max(reversed(seq), key=...). - Performance: O(n) —
max()iteriert genau einmal. - Negative Liste/Iterable:
max(reversed(seq))ist äquivalent zumin(seq)nicht — Vergleich passiert immer normal. - Verwandte Funktionen:
min()(smallest),sorted(...)[-1](langsamer),heapq.nlargest(n, ...)(Top-N).