Die Python-Funktion min() ist das Pendant zu max(): Sie liefert das kleinste 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 an beliebige Datentypen anpassen.
Einleitung
min() hat zwei Aufruf-Varianten:
- Mit einem Iterable:
min([3, 1, 4])→1 - Mit mehreren Argumenten:
min(3, 1, 4)→1
In beiden Fällen werden Elemente paarweise mit < verglichen. Bei Strings wird lexikografisch verglichen, bei Tupeln komponentenweise.
Die key-Funktion verändert nur den Vergleichsmaßstab, nicht den Rückgabewert: min() liefert immer das ursprüngliche Element. Klassisch für „kürzestes Wort", „günstigstes Produkt", „oldest Datensatz".
default rettet vor ValueError bei leerer Eingabe — ohne default und mit leerem Iterable wird ein Fehler geworfen.
Syntax
min(iterable, *, key=None)
min(iterable, *, key=None, default=...)
min(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) Rückgabewert für ein leeres Iterable. Ohne default und mit leerem Iterable wirft min() einen ValueError.
Rückgabewert
Das kleinste Element gemäß <-Vergleich (oder key()-Vergleich). Bei Gleichstand wird das erste Element in der Iteration zurückgegeben.
Beispiele
Standard-Verwendung mit Zahlen, Argumenten und Strings
Bei Strings wird lexikografisch verglichen — Großbuchstaben kommen vor Kleinbuchstaben (wegen ASCII-Codepunkten):
print(min([3, 1, 4, 1, 5, 9, 2, 6]))
print(min(3, 1, 4))
print(min("Hallo Welt")) # Leerzeichen ist das kleinste Zeichen
print(min(["banana", "Apfel", "kiwi"]))1
1
ApfelMit key-Funktion
Wer das kürzeste Wort sucht, vergleicht nach Länge — nicht nach den Buchstaben selbst:
words = ["Apfel", "Kiwi", "Wassermelone", "Birne"]
print(min(words, key=len)) # kürzestes Wort
print(min(words)) # alphabetisch erstesKiwi
ApfelMit default für leere Iterables
Ohne default erzeugt eine leere Liste einen ValueError — default macht den Fall sicher behandelbar:
leer = []
print(min(leer, default=float("inf")))
try:
min(leer)
except ValueError as e:
print(e)inf
min() iterable argument is emptyPraktische Beispiele
Günstigstes Produkt finden
Klassischer Anwendungsfall: Eine Liste von Dictionaries nach einem Feldwert vergleichen:
products = [
{"name": "Laptop", "preis": 1299},
{"name": "Maus", "preis": 25},
{"name": "Monitor", "preis": 449},
]
cheapest = min(products, key=lambda p: p["preis"])
print(cheapest){'name': 'Maus', 'preis': 25}Ältester Eintrag nach Datum
Auch Datums-Werte können als key direkt verglichen werden — datetime-Objekte unterstützen <:
from datetime import date
entries = [
{"name": "A", "datum": date(2026, 5, 1)},
{"name": "B", "datum": date(2024, 7, 14)},
{"name": "C", "datum": date(2025, 1, 9)},
]
oldest = min(entries, key=lambda e: e["datum"])
print(oldest){'name': 'B', 'datum': datetime.date(2024, 7, 14)}Wert begrenzen mit min/max
Eine Kombination aus min() und max() ist die kompakteste Form, einen Wert in einem Bereich zu „klemmen" (clamp):
def clamp(value, untergrenze, obergrenze):
return min(max(value, untergrenze), obergrenze)
print(clamp(150, 0, 100))
print(clamp(-5, 0, 100))
print(clamp(42, 0, 100))100
0
42Praktische Hinweise
min(iter, default=...)ist sauberer alsmin(iter) if iter else fallback.- Stabilität: Bei mehreren gleich kleinen Elementen gewinnt das erste.
- Performance: O(n) —
min()iteriert genau einmal durch die Eingabe. - Kombination:
min()undmax()zusammen sind ideal für „clamp"-Logik. - Verwandte Funktionen:
max()(größtes),sorted()[0](langsamer),heapq.nsmallest(n, ...)(Bottom-N).