Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m323:learningunits:lu04:listcomprehensions [2025/12/11 09:16] – [Condition] kmaurizi | modul:m323:learningunits:lu04:listcomprehensions [2025/12/11 13:50] (aktuell) – kmaurizi | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== LU04c - List Comprehensions ====== | ====== LU04c - List Comprehensions ====== | ||
| - | List Comprehensions | + | List Comprehensions |
| ===== Hauptverwendungszweck von List Comprehensions ===== | ===== Hauptverwendungszweck von List Comprehensions ===== | ||
| - | List Comprehensions werden in Python | + | List Comprehensions werden in Python |
| + | |||
| + | * **Transformation**: | ||
| + | * **Filterung (optional)**: | ||
| + | |||
| + | Typisch ist eine Kombination aus beidem: | ||
| + | > „Nimm alle Elemente | ||
| ===== Die Syntax ===== | ===== Die Syntax ===== | ||
| + | |||
| + | Die allgemeine Form einer List Comprehension ist: | ||
| <code python> | <code python> | ||
| - | newlist = [expression for item in iterable if condition | + | newlist = [expression for item in iterable if condition] |
| </ | </ | ||
| - | ===== Teile einer List Comprehension ===== | + | * **expression**: |
| + | * **item**: Der Name für das aktuelle Element in der Schleife. | ||
| + | * **iterable**: | ||
| + | * **condition** (optional): Eine Bedingung, die '' | ||
| + | |||
| + | Ohne Filter-Bedingung sieht die einfachste Form so aus: | ||
| - | ==== Condition ==== | ||
| - | Ein optionaler Filter, um nur bestimmte Elemente einzuschließen. | ||
| <code python> | <code python> | ||
| - | cars = [' | + | newlist = [expression |
| - | newlist = [car for car in cars if x != ' | + | |
| </ | </ | ||
| - | Die Bedingung '' | ||
| - | Die Bedingung | + | Das ist äquivalent zu: |
| <code python> | <code python> | ||
| - | newlist = [x for x in cars] | + | newlist = [] |
| + | for item in iterable: | ||
| + | # optional: if condition: | ||
| + | newlist.append(expression) | ||
| </ | </ | ||
| - | ==== Iterable | + | ===== Teile einer List Comprehension |
| - | Das Iterable kann ein beliebiges iterierbares Objekt sein, z. B. eine Liste, ein Tupel, ein Set usw. | + | |
| - | - **Beispiel mit einer Liste**: <code python> | + | |
| - | squared | + | |
| - | # Ergebnis: [1, 4, 9, 16] | + | |
| - | + | ||
| - | numbers | + | |
| - | squared | + | |
| - | # Ergebnis: [1, 4, 9, 16] | + | |
| - | </ | + | |
| - | - **Beispiel mit einem Tupel**: <code python> | + | |
| - | doubled | + | |
| - | # Ergebnis: [2, 4, 6, 8] | + | |
| - | </ | + | |
| - | - **Beispiel mit range()**: <code python> | + | |
| - | newlist | + | |
| - | # Ergebnis: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | + | |
| - | </ | + | |
| ==== Expression ==== | ==== Expression ==== | ||
| - | Der aktuelle Gegenstand der Iteration, aber auch das Ergebnis, das vor seinem Einzug in die neue Liste manipuliert werden kann. | ||
| - | | + | Die **Expression** ist der Teil, der tatsächlich in der neuen Liste landet. Sie kann: |
| - | #Expression = x * 2 | + | |
| + | * einfach das aktuelle Element sein (`item`) | ||
| + | * oder eine beliebige Berechnung / Funktionsanwendung auf `item`. | ||
| + | |||
| + | | ||
| + | | ||
| + | # Expression = x * 2 | ||
| doubled = [x * 2 for x in range(5)] | doubled = [x * 2 for x in range(5)] | ||
| # Ergebnis: [0, 2, 4, 6, 8] | # Ergebnis: [0, 2, 4, 6, 8] | ||
| - | </ | + | |
| - | - **Beispiel mit Funktionsaufruf**: | + | |
| + | - **Beispiel mit Funktionsaufruf**: | ||
| + | | ||
| cars = [' | cars = [' | ||
| newlist = [car.upper() for car in cars] | newlist = [car.upper() for car in cars] | ||
| - | print(newlist) | + | print(newlist) |
| - | </ | + | </ |
| ==== Item ==== | ==== Item ==== | ||
| - | Das aktuelle Element, das in der Iteration verarbeitet wird. Der Name des Item wird im '' | ||
| - | **Beispiel** | + | **item** ist der Name für das aktuelle Element der Iteration. Er wird im '' |
| - | <code python> | + | |
| + | - **Beispiel**: | ||
| + | <code python> | ||
| cars = [' | cars = [' | ||
| newlist = [item.upper() for item in cars] | newlist = [item.upper() for item in cars] | ||
| print(newlist) | print(newlist) | ||
| - | </ | + | |
| + | Hier ist '' | ||
| + | |||
| + | ==== Iterable ==== | ||
| + | |||
| + | Das **Iterable** kann ein beliebiges iterierbares Objekt sein, z. B. eine Liste, ein Tupel, ein Set, ein String oder das Ergebnis von '' | ||
| + | |||
| + | - **Beispiel mit einer Liste**: | ||
| + | <code python> | ||
| + | squared = [x**2 for x in [1, 2, 3, 4]] | ||
| + | # Ergebnis: [1, 4, 9, 16] | ||
| + | |||
| + | numbers = [1, 2, 3, 4] | ||
| + | squared = [x**2 for x in numbers] | ||
| + | # Ergebnis: [1, 4, 9, 16] | ||
| + | </ | ||
| + | |||
| + | - **Beispiel mit einem Tupel**: | ||
| + | <code python> | ||
| + | doubled = [x * 2 for x in (1, 2, 3, 4)] | ||
| + | # Ergebnis: [2, 4, 6, 8] | ||
| + | </ | ||
| + | |||
| + | - **Beispiel mit range()**: | ||
| + | <code python> | ||
| + | newlist = [x for x in range(10)] | ||
| + | # Ergebnis: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | ||
| + | </ | ||
| + | |||
| + | ==== Condition ==== | ||
| + | |||
| + | Die **Condition** ist ein optionaler Filter, der entscheidet, | ||
| + | |||
| + | - **Beispiel mit Filter**: | ||
| + | <code python> | ||
| + | cars = [' | ||
| + | newlist = [car for car in cars if car != ' | ||
| + | # newlist = [' | ||
| + | </ | ||
| + | |||
| + | Die Bedingung '' | ||
| + | |||
| + | Die Bedingung ist optional und kann weggelassen werden: | ||
| + | |||
| + | - **Ohne Filter**: | ||
| + | <code python> | ||
| + | newlist = [x for x in cars] | ||
| + | # Kopie der ursprünglichen Liste | ||
| + | </ | ||
| ===== Weitere Beispiele ===== | ===== Weitere Beispiele ===== | ||
| - | - **Mit einem Iterable eines anderen Typs**:< | + | - **Mit einem Iterable eines anderen Typs (String)**: |
| - | letters = [letter for letter in 'Hallo Welt' | + | |
| - | # Ergebnis: [' | + | letters = [letter for letter in 'Hallo Welt' |
| + | # Ergebnis: [' | ||
| </ | </ | ||
| - | | + | |
| - | matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] | + | |
| - | flattened = [num for row in matrix for num in row] | + | |
| - | # Ergebnis: [1, 2, 3, 4, 5, 6, 7, 8, 9] | + | matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] |
| + | flattened = [num for row in matrix for num in row] | ||
| + | # Ergebnis: [1, 2, 3, 4, 5, 6, 7, 8, 9] | ||
| </ | </ | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| - | List Comprehensions sind ein mächtiges Werkzeug in Python, | + | List Comprehensions sind ein mächtiges Werkzeug in Python, |
| </ | </ | ||
| ---- | ---- | ||
| {{tag> | {{tag> | ||
| - | [[https:// | + | [[https:// |