Comprehensions und Built-ins
Schreiben Sie prägnante Lösungen mit List-, Dict- und Set-Comprehensions sowie map, filter, zip, enumerate und sorted mit key-Funktionen.
Comprehensions und Built-ins ist eine kostenlose DSA Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DSA Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DSA Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
List-Comprehensions: Prägnantes Filtern
Eine List Comprehension fasst eine for-Schleife mit append in einer übersichtlichen Zeile zusammen: [expr for item in iterable if condition]. Sie ist etwas schneller und zeigt, dass Sie Python sicher beherrschen.
# Traditional loop
squares = []
for n in range(1, 6):
squares.append(n * n)
print(squares) # [1, 4, 9, 16, 25]
# List comprehension
squares = [n * n for n in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
# With filter
evens = [n for n in range(10) if n % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]Verschachtelte Comprehensions für 2D-Gitter
Mit verschachtelten Comprehensions erstellen Sie 2D-Gitter – die übliche Methode zum Einrichten einer DP-Tabelle. Vermeiden Sie [[0]*C]*R, da dadurch dieselbe innere Liste für jede Zeile verwendet wird. Der Code zeigt die Korrektur.
# WRONG: all rows are the same object!
bad = [[0] * 3] * 3
bad[0][0] = 9
print(bad) # [[9,0,0],[9,0,0],[9,0,0]] oops!
# CORRECT: each row is a separate list
good = [[0] * 3 for _ in range(3)]
good[0][0] = 9
print(good) # [[9,0,0],[0,0,0],[0,0,0]]Dict- und Set-Comprehensions
Dict- und Set-Comprehensions verwenden geschweifte Klammern: {k: v for ...} für ein dict und {expr for ...} für ein set. Beide können filtern, sodass Sie in einer einzigen Zeile transformieren oder Duplikate entfernen können.
# Dict comprehension: square lookup
sq_map = {n: n**2 for n in range(1, 6)}
print(sq_map) # {1:1, 2:4, 3:9, 4:16, 5:25}
# Set comprehension: unique lengths
words = ['cat', 'dog', 'elephant', 'ant']
unique_lengths = {len(w) for w in words}
print(unique_lengths) # {3, 8} (order varies)Generatorausdrücke: Speichereffizient
Wenn Sie eine Comprehension in () einschließen, erhalten Sie einen Generator, der Werte einzeln liefert und dadurch Speicher spart. Übergeben Sie ihn direkt an sum, max oder eine andere Funktion, um sehr große Sequenzen zu verarbeiten.
# List comprehension builds all values at once
total = sum([n**2 for n in range(1_000_000)])
# Generator yields one at a time — lower memory
total = sum(n**2 for n in range(1_000_000))
print(total) # 333332833333500000
# any/all with generators short-circuit early
nums = [4, 6, 8, 3, 10]
has_odd = any(n % 2 == 1 for n in nums)
print(has_odd) # True (stops at 3)map() und filter(): Funktionaler Stil
map wendet eine Funktion auf jedes Element an; filter behält die Elemente, die einen Test bestehen. Beide sind lazy, daher müssen Sie sie in list() einschließen, um die Ergebnisse zu sehen. Comprehensions sind oft übersichtlicher.
nums = [1, 2, 3, 4, 5]
# map: apply function to each element
doubled = list(map(lambda n: n * 2, nums))
print(doubled) # [2, 4, 6, 8, 10]
# filter: keep elements passing predicate
evens = list(filter(lambda n: n % 2 == 0, nums))
print(evens) # [2, 4]
# Equivalent comprehensions (often preferred)
doubled = [n * 2 for n in nums]
evens = [n for n in nums if n % 2 == 0]zip(): Sequenzen paarweise verknüpfen
zip paart zwei Sequenzen und endet bei der kürzeren – die übersichtliche Methode, zwei Listen gleichzeitig zu durchlaufen. Der Trick zip(*matrix) transponiert eine 2D-Liste. Sehen Sie sich den Code an.
keys = ['a', 'b', 'c']
values = [1, 2, 3]
pairs = list(zip(keys, values))
print(pairs) # [('a',1), ('b',2), ('c',3)]
# Build dict from two lists
d = dict(zip(keys, values))
print(d) # {'a':1, 'b':2, 'c':3}
# Transpose a matrix
matrix = [[1,2,3],[4,5,6],[7,8,9]]
transposed = [list(row) for row in zip(*matrix)]
print(transposed) # [[1,4,7],[2,5,8],[3,6,9]]enumerate(): Index plus Wert
enumerate liefert beim Durchlaufen (index, value) – übersichtlicher als range(len(lst)) und ohne Off-by-one-Fehler. Verwenden Sie die Option start, um die Zählung bei 1 zu beginnen.
fruits = ['apple', 'banana', 'cherry']
# Instead of: for i in range(len(fruits)):
for i, fruit in enumerate(fruits):
print(i, fruit)
# 0 apple / 1 banana / 2 cherry
# Start from 1
for i, fruit in enumerate(fruits, 1):
print(f'{i}. {fruit}')
# 1. apple / 2. banana / 3. cherrysorted() mit Key-Funktionen
sorted gibt eine neue sortierte Liste zurück und akzeptiert für eine benutzerdefinierte Reihenfolge eine Key-Funktion. Sortieren Sie nach Länge, nach einem Tupelfeld oder ohne Beachtung der Groß- und Kleinschreibung. Der Code zeigt Sortierungen nach mehreren Schlüsseln.
# Sort by second element of tuple
intervals = [(1,3),(2,1),(0,5)]
print(sorted(intervals, key=lambda x: x[1]))
# [(2,1),(1,3),(0,5)]
# Sort strings case-insensitively
words = ['Banana', 'apple', 'Cherry']
print(sorted(words, key=str.lower))
# ['apple', 'Banana', 'Cherry']
# Sort by multiple keys: first by length, then alphabetically
words = ['fig', 'apple', 'ant', 'kiwi']
print(sorted(words, key=lambda w: (len(w), w)))
# ['ant', 'fig', 'kiwi', 'apple']min() und max() mit Key
min und max akzeptieren ebenfalls einen key-Parameter. Damit können Sie in einem Aufruf das Element mit dem kleinsten oder größten zugeordneten Wert auswählen – etwa das längste Wort. Sehen Sie sich den Code an.
words = ['banana', 'fig', 'strawberry', 'kiwi']
longest = max(words, key=len)
print(longest) # strawberry
shortest = min(words, key=len)
print(shortest) # fig
# Find interval with earliest end
intervals = [(2,6),(1,3),(4,5)]
earlist_end = min(intervals, key=lambda x: x[1])
print(earlist_end) # (1, 3)any() und all() für Kurzschlussprüfungen
any stoppt beim ersten Element mit Wahrheitswert True; all stoppt beim ersten Element mit Wahrheitswert False. Beide verwenden einen Kurzschluss, sodass sie zusammen mit einem Generator Bedingungen schnell und verzögert prüfen.
nums = [2, 4, 6, 7, 8]
all_even = all(n % 2 == 0 for n in nums)
print(all_even) # False (7 is odd)
has_large = any(n > 5 for n in nums)
print(has_large) # True (6 qualifies, stops there)
# Practical: check if sudoku row has no duplicates
row = [1, 2, 3, 4, 5, 6, 7, 8, 9]
valid = all(1 <= n <= 9 for n in row) and len(set(row)) == 9
print(valid) # Truesum(), abs() und divmod()
Drei mathematische Hilfsfunktionen begegnen Ihnen überall: sum, abs und divmod. divmod(a, b) gibt Quotient und Rest gleichzeitig zurück – ideal, um Ziffern zu ermitteln.
# sum with generator
print(sum(n**2 for n in range(1, 6))) # 55
# abs for distance problems
print(abs(-7)) # 7
# divmod for digit extraction
num = 1234
digits = []
while num:
num, d = divmod(num, 10)
digits.append(d)
digits.reverse()
print(digits) # [1, 2, 3, 4]Kurzer Test
Kurzer Test – prüfen wir, wie gut die Comprehensions und Built-ins angekommen sind. Eine Frage, Sie schaffen das. ✅
Zusammenfassung der Lektion
Zusammenfassung: Comprehensions machen aus Schleifen Einzeiler, Built-ins wie zip und sorted akzeptieren Key-Funktionen, und Generatoren sparen bei Aufgaben mit nur einem Durchlauf Speicher.
Häufig gestellte Fragen
Ist die Lektion „Comprehensions und Built-ins“ kostenlos?
Ja — der vollständige Text von „Comprehensions und Built-ins“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DSA Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DSA Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Comprehensions und Built-ins“?
Schreiben Sie prägnante Lösungen mit List-, Dict- und Set-Comprehensions sowie map, filter, zip, enumerate und sorted mit key-Funktionen. Du übst DSA Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DSA Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. DSA Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Comprehensions und Built-ins“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DSA Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede DSA Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Listen, Tupel und Slicing
- Dictionaries und Sets in Python
- Comprehensions und Built-ins
- Funktionen, Closures und Lambda