funktionale Programmierung Material Motivation Grundlagen Rekursion Listen Funktionen höherer Ordnung list comprehension Generator lazy evaluation Haskell Endrekursion Beispiele
Pfad: Startseite/Fächer/Informatik/funktionale Programmierung
list comprehension

Einführung

In der Mathematik kann man Mengen folgendermaßen beschreiben: { x2 | x ∈ {1..10} }. Dabei enthält die Menge Elemente, die durch einen Ausdruck, der Variablen enthält, beschrieben werden. Die möglichen Werte der Variablen werden durch Mengen festgelegt.

Diese Möglichkeit hat man durch list comprehensions auch in Python. list comprehensions liefern eine übersichtlichere Syntax für map und filter.

list comprehension

Beispiele 1

def factors(n):
    return [m for m in range(1,n+1) if n%m == 0]

def prime(n):
    return (len(factors(n)) == 2)

Beispiele

Beispiel 2, Pythagoreische Tripel

Pythagoreische Tripel

Aufgaben

  1. Schreibe mit Hilfe einer list comprehensions eine Funktion count(element,liste), die das Vorkommen von element in der liste zählt. Teste z.B. mit count('s','Mississippi') (ja, Strings sind in Python iterable) oder count(3,[3,2,3,3,5,6,3,3]).
  2. In Haskell kann man Liste von Aufzähltypen durch Angabe des ersten und des letzten Wertes sehr bequem angeben, z.B. [1..100] oder ['a'..'z']. Für ganze Zahlen lässt sich das in Python mit range(1,100+1) ganz gut darstellen. Schreibe nun auch eine Funktion charlist(ch1,ch2), die ein Hauch des Haskell-Komforts rettet.
  3. Schreibe eine Funktion freqs(n1,n2,s), die für einen String s eine Liste des absoluten Auftretens der Unicode-Zeichen mit der Nummer n1 bis n2 angibt.
    Beispiel: freqs(ord('a'),ord('z'),'aaabbcdddddeefz') liefert [3, 2, 1, 5, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] .

Links