Top-Fragen
Zeitleiste
Chat
Kontext

List Comprehension

syntaktische Gefüge, die beschreiben, wie vorhandene Listen oder andere iterierbare Objekte verarbeitet werden, um aus ihnen neue Listen zu erstellen Aus Wikipedia, der freien Enzyklopädie

Remove ads

List Comprehensions oder Listen-Abstraktionen[1] sind syntaktische Gefüge, die beschreiben, wie vorhandene Listen oder andere iterierbare Objekte verarbeitet werden, um aus ihnen neue Listen zu erstellen.

Sie werden in einigen Programmiersprachen wie z. B. Python, Haskell, Common Lisp oder Julia unterstützt und werden in Analogie zur beschreibenden Mengenschreibweise (engl. set-builder notation) notiert.

Remove ads

Ähnlichkeiten zur Mengenschreibweise

Zusammenfassung
Kontext

Die Menge der Quadratzahlen mit geraden Basen zwischen 10 und 20 lässt sich mit der beschreibenden Mengenschreibweise folgendermaßen notieren

.

In Haskell sieht eine List Comprehension, die dieselben Bedingungen erfüllt, folgendermaßen aus:

m = [x^2 | x <-[10..20], mod x 2 == 0]

Es ist zu beachten, dass mit der Angabe [10..20] implizit angegeben wird, dass eine Teilmenge der natürlichen Zahlen in der Eingabemenge ist.

In Python benutzt man folgende Schreibweise

m = [x**2 for x in range(10,21) if x%2 == 0]

Hier gilt fast dasselbe wie bei Haskell, nur dass bei dem Initialisieren der Range-Klasse für die obere Grenze noch 1 dazuaddiert werden muss.[2]

Alle drei Notationen lassen sich in vier Teile aufgliedern:

  • Ausgabeausdruck (output expression): x^2
  • Variable: x
  • Eingabemenge (input set): die natürlichen Zahlen N
  • Prädikat/Eigenschaft (predicate): die geraden Zahlen der Eingabemenge
Remove ads

Mehrdimensionale Felder

Manche Programmiersprachen wie Python oder Haskell haben keine native Unterstützung für mehrdimensionale Felder. In einem solchen Fall kann man mithilfe von List Comprehensions eine Ersatzkonstruktion schaffen.

In diesem Beispiel wird eine leere 5x5-Matrixersatzkonstruktion mit Listen erstellt:

m = [[None for zeile in range(5)] for spaltenNr in range(5)] # Erstellung
m[1][4] = 4 # Element in Zeile 2, Spalte 5 mit dem Wert 4 belegen

Der Ausgabeausdruck ist ebenfalls eine List Comprehension. Es handelt sich um also eine Verschachtelung.

Die innere List Comprehension erzeugt eine Zeile aus fünf Elementen mit dem Nullwert None und die äußere List Comprehension sorgt dann dafür, dass eine Liste mit fünf Zeilen bedingungslos (ohne Prädikat) erstellt wird. Der Zugriff funktioniert dann wie bei einem gewöhnlichen mehrdimensionalen Feld.

Remove ads

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads