Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m323:learningunits:lu04:listcomprehensions [2024/03/28 14:07] – angelegt - Externe Bearbeitung 127.0.0.1modul:m323:learningunits:lu04:listcomprehensions [2025/12/11 13:50] (aktuell) kmaurizi
Zeile 1: Zeile 1:
 ====== LU04c - List Comprehensions ====== ====== LU04c - List Comprehensions ======
  
-List Comprehensions bieten eine einfache Möglichkeit, Listen zu erstellenSie ermöglichen esAusdrücke auf eine Weise zu schreiben, die sich sehr natürlich und näher an der mathematischen Schreibweise anfühlt.+List Comprehensions sind eine kompakte Schreibweiseum aus vorhandenen Daten neue Listen zu erzeugenMan kann damit Elemente **transformieren** (z. B. quadrierenin Grossbuchstaben umwandeln) und optional **filtern** – in einer einzigen, gut lesbaren Zeile. Die Schreibweise erinnert an mathematische Mengen-Schreibweise.
  
 ===== Hauptverwendungszweck von List Comprehensions ===== ===== Hauptverwendungszweck von List Comprehensions =====
  
-List Comprehensions werden in Python vorwiegend zur Transformation von Daten verwendet. Sie sind besonders nützlich, wenn man eine bestehende Liste (oder ein anderes iterierbares Objektnehmen und jedes ihrer Elemente auf eine bestimmte Weise transformieren möchteAußerdem kann man mit ihnen Elemente basierend auf bestimmten Kriterien filtern.+List Comprehensions werden in Python hauptsächlich für zwei Dinge verwendet
 + 
 +  * **Transformation**: Jedes Element eines Iterables wird in eine neue Form gebracht (z. B. ''x'' → ''%%x**2%%'' oder ''"audi"'' → ''"AUDI"'') 
 +  * **Filterung (optional)**: Es werden nur diejenigen Elemente übernommen, für die eine Bedingung erfüllt ist. 
 + 
 +Typisch ist eine Kombination aus beidem:   
 +> „Nimm alle Elemente aus einer bestehenden Datenquelle, filtere sie nach einer Bedingung und wandle sie in eine neue Form um.
  
 ===== Die Syntax ===== ===== Die Syntax =====
 +
 +Die allgemeine Form einer List Comprehension ist:
  
 <code python> <code python>
-newlist = [expression for item in iterable if condition == True]+newlist = [expression for item in iterable if condition]
 </code> </code>
  
-===== Teile einer List Comprehension =====+  * **expression**: Der Ausdruck, dessen Wert in die neue Liste aufgenommen wird (oft eine Transformation von ''item''). 
 +  * **item**: Der Name für das aktuelle Element in der Schleife. 
 +  * **iterable**: Die Datenquelle, über die iteriert wird (z. B. Liste, Tupel, range, String, …). 
 +  * **condition** (optional): Eine Bedingung, die ''True'' oder ''False'' ergibt. Nur wenn sie `True` ist, wird ''expression'' in die neue Liste aufgenommen. 
 + 
 +Ohne Filter-Bedingung sieht die einfachste Form so aus:
  
-==== Condition ==== 
-Ein optionaler Filter, um nur bestimmte Elemente einzuschließen. 
 <code python> <code python>
-newlist = [for in cars if x != 'tesla']+newlist = [expression for item in iterable]
 </code> </code>
-Die Bedingung ''if x != 'tesla''' liefert ''True'' für alle Elemente außer ''tesla'', so dass die neue Liste alle Autos außer ''Tesla'' enthält. 
  
-Die Bedingung ist optional und kann weggelassen werden:+Das ist äquivalent zu: 
 <code python> <code python>
-newlist = [for in cars]+newlist = [
 +for item in iterable: 
 +    # optional: if condition: 
 +    newlist.append(expression)
 </code> </code>
  
-==== 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 [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] +
-  </code> +
-  - **Beispiel mit einem Tupel**: <code python> +
-    doubled [x * 2 for x in (1, 2, 3, 4)] +
-    # Ergebnis: [2, 4, 6, 8] +
-    </code> +
-  - **Beispiel mit range()**: <code python> +
-    newlist [x for x in range(10)] +
-    # Ergebnis: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +
-    </code>+
  
 ==== Expression ==== ==== Expression ====
-Der aktuelle Gegenstand der Iteration, aber auch das Ergebnis, das vor seinem Einzug in die neue Liste manipuliert werden kann. 
  
-  - **Beispiel mathematische Operation**: <code python> +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`. 
 + 
 +  - **Beispiel mathematische Operation**: 
 +    <code python> 
 +# 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]
-</code> +    </code> 
-  - **Beispiel mit Funktionsaufruf**: <code python>+ 
 +  - **Beispiel mit Funktionsaufruf**: 
 +    <code python>
 cars = ['audi', 'bmw', 'subaru', 'toyota'] cars = ['audi', 'bmw', 'subaru', 'toyota']
 newlist = [car.upper() for car in cars] newlist = [car.upper() for car in cars]
-print(newlist) +print(newlist)  # ['AUDI', 'BMW', 'SUBARU', 'TOYOTA'] 
-</code>+    </code>
  
 ==== Item ==== ==== Item ====
-Das aktuelle Element, das in der Iteration verarbeitet wird. Der Name des Item wird im ''for''-Konstrukt definiert: ''for __item__ in list'' 
  
-**Beispiel** +**item** ist der Name für das aktuelle Element der Iteration. Er wird im ''for''-Teil definiert: ''for item in iterable''
-<code python>+ 
 +  - **Beispiel**: 
 +    <code python>
 cars = ['audi', 'bmw', 'subaru', 'toyota'] cars = ['audi', 'bmw', 'subaru', 'toyota']
 newlist = [item.upper() for item in cars] newlist = [item.upper() for item in cars]
 print(newlist) print(newlist)
-</code>+    </code>
  
 +Hier ist ''item'' nacheinander '''audi''', '''bmw''', '''subaru''', '''toyota'''.
 +
 +==== Iterable ====
 +
 +Das **Iterable** kann ein beliebiges iterierbares Objekt sein, z. B. eine Liste, ein Tupel, ein Set, ein String oder das Ergebnis von ''range()''.
 +
 +  - **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]
 +    </code>
 +
 +  - **Beispiel mit einem Tupel**:
 +    <code python>
 +doubled = [x * 2 for x in (1, 2, 3, 4)]
 +# Ergebnis: [2, 4, 6, 8]
 +    </code>
 +
 +  - **Beispiel mit range()**:
 +    <code python>
 +newlist = [x for x in range(10)]
 +# Ergebnis: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 +    </code>
 +
 +==== Condition ====
 +
 +Die **Condition** ist ein optionaler Filter, der entscheidet, ob ein Element in die neue Liste aufgenommen wird. Nur wenn die Bedingung ''True'' ergibt, wird ''expression'' übernommen.
 +
 +  - **Beispiel mit Filter**:
 +    <code python>
 +cars = ['audi', 'vw', 'seat', 'skoda', 'tesla']
 +newlist = [car for car in cars if car != 'tesla']
 +# newlist = ['audi', 'vw', 'seat', 'skoda']
 +    </code>
 +
 +Die Bedingung ''car != 'tesla%%'%%'' liefert ''True'' für alle Elemente ausser '''tesla%%'%%'', daher enthält die neue Liste alle Autos ausser Tesla.
 +
 +Die Bedingung ist optional und kann weggelassen werden:
 +
 +  - **Ohne Filter**:
 +    <code python>
 +newlist = [x for x in cars]
 +# Kopie der ursprünglichen Liste
 +    </code>
  
 ===== Weitere Beispiele ===== ===== Weitere Beispiele =====
  
-  - **Mit einem Iterable eines anderen Typs**:<code python> +  - **Mit einem Iterable eines anderen Typs (String)**: 
-    letters = [letter for letter in 'Hallo Welt'+    <code python> 
-    # Ergebnis: ['H', 'a', 'l', 'l', 'o', ' ', 'W', 'e', 'l', 't']+letters = [letter for letter in 'Hallo Welt'
 +# Ergebnis: ['H', 'a', 'l', 'l', 'o', ' ', 'W', 'e', 'l', 't']
     </code>     </code>
-  - **Nested List Comprehensions**:<code python> + 
-    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +  - **Nested List Comprehensions (verschachtelt)**: 
-    flattened = [num for row in matrix for num in row] +    <code python> 
-    # 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]
     </code>     </code>
  
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-List Comprehensions sind ein mächtiges Werkzeug in Python, das den Code sauberer und verständlicher machen kann. Sie ermöglichen die schnelle Transformation von Daten und unterstützen dabei, den Code näher an die menschliche Logik und mathematische Notation zu bringen.+List Comprehensions sind ein mächtiges Werkzeug in Python, um vorhandene Daten in einer einzigen, klaren Zeile zu **transformieren** und (falls nötig) zu **filtern**. Richtig eingesetzt machen sie Code kürzer und oft besser lesbar.
 </WRAP> </WRAP>
  
 ---- ----
 {{tag>M323-LU04}} {{tag>M323-LU04}}
-[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi +[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi
  
  • modul/m323/learningunits/lu04/listcomprehensions.1711631267.txt.gz
  • Zuletzt geändert: 2024/03/28 14:07
  • von 127.0.0.1