24.02.2014 Aufrufe

4 in 1 - Medieninformatik - Hochschule RheinMain

4 in 1 - Medieninformatik - Hochschule RheinMain

4 in 1 - Medieninformatik - Hochschule RheinMain

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Programmieren <strong>in</strong> Python<br />

Funktionale Primitive<br />

Programmieren <strong>in</strong> Python<br />

Funktionale Primitive<br />

E<strong>in</strong>satzbeispiel für map<br />

map illustriert<br />

Aufgabe<br />

• Berechne die Liste der Quadratzahlen<br />

von 1 bis 10<br />

Lösung<br />

• for-Schleife<br />

• Liste zusammenbauen<br />

• Zurückgeben<br />

Funktionale Lösung<br />

• E<strong>in</strong>zeiler mit map<br />

• Liste der Zahlen mit range<br />

• Quadrieren als Lambda-Funktion<br />

• Ke<strong>in</strong>e Schleifen<br />

1 def quadratzahlen(von=1, bis=10):<br />

2 lis = []<br />

3 for i <strong>in</strong> range(von, bis+1):<br />

4 lis.append(i*i)<br />

5 return lis<br />

6<br />

7 pr<strong>in</strong>t quadratzahlen()<br />

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]<br />

1 def quadratzahlen(von=1, bis=10):<br />

2 return map(lambda x: x*x,<br />

3 range(von, bis+1))<br />

4<br />

5 pr<strong>in</strong>t quadratzahlen()<br />

1 2 3 2 3 4 4 8 16<br />

lambda x, y, z: x+y+z<br />

7 13 23<br />

1 >>> map(lambda x, y, z: x+y+z, [1, 2, 3], [2, 3, 4], [4, 8, 16])<br />

2 [7, 13, 23]<br />

Prof. Dr. Peter Barth (HS-Rhe<strong>in</strong>Ma<strong>in</strong>) Programmieren 3 29. Januar 2013 189 / 326<br />

Prof. Dr. Peter Barth (HS-Rhe<strong>in</strong>Ma<strong>in</strong>) Programmieren 3 29. Januar 2013 190 / 326<br />

Programmieren <strong>in</strong> Python<br />

Funktionale Primitive<br />

Programmieren <strong>in</strong> Python<br />

Funktionale Primitive<br />

Funktionale Primitive – filter<br />

E<strong>in</strong>satzbeispiel für filter<br />

Nur Elemente für die Funktion ok ist<br />

• Für alle Objekte e<strong>in</strong>er Sequenz e<strong>in</strong>e<br />

Funktion anwenden, nur die<br />

durchlassen, für die der Funktionswert<br />

äquivalent zu wahr ist<br />

• Schlüsselwort filter<br />

• Erster Parameter die Funktion<br />

• Zweiter Parameter die Sequenz<br />

• Ergebnis ist Liste der ursprünglichen<br />

Elemente, deren Funktionswert<br />

äquivalent zu wahr ist<br />

Beispiele<br />

• Test ob Zahl größer 0<br />

• Test ob Zahl zwischen 1 und 2<br />

• Test ob gerade Zahl<br />

1 >>> def groesser0(x):<br />

2 return x>0<br />

3 >>> filter(groesser0, [1,-1,2,-2,3,-3,4])<br />

4 [1, 2, 3, 4]<br />

5 >>> filter(lambda x: x>0,<br />

6 [1, -1, 2, -2, 3, -3, 4])<br />

7 [1, 2, 3, 4]<br />

8 >>> filter(lambda x: x>0 and x>> filter(lambda x: x%2 == 0,<br />

12 [1, 2, 3, 4, 5])<br />

13 [2, 4]<br />

Aufgabe<br />

• Berechne die Liste der Primzahlen<br />

zwischen 2 und 100<br />

Lösung<br />

• for-Schleife<br />

• Liste zusammenbauen<br />

• Zurückgeben<br />

Funktionale Lösung<br />

• E<strong>in</strong>zeiler mit filter<br />

• Liste der Zahlen mit range<br />

• Funktion zum Testen ob Primzahl wie<br />

bei for-Schleife<br />

• Ke<strong>in</strong>e Schleifen<br />

1 def is_prim(zahl):<br />

2 for teiler <strong>in</strong> range(2, zahl):<br />

3 if zahl%teiler == 0:<br />

4 return False<br />

5 return True<br />

6 def prims():<br />

7 primzahlen = []<br />

8 for zahl <strong>in</strong> range(2, 100):<br />

9 if is_prim(zahl):<br />

10 primzahlen.append(zahl)<br />

11 return primzahlen<br />

12 pr<strong>in</strong>t prims()<br />

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29,<br />

31, 37, 41, 43, 47, 53, 59, 61, 67,<br />

71, 73, 79, 83, 89, 97]<br />

1 def prims():<br />

2 return filter(is_prim, range(2, 100))<br />

Prof. Dr. Peter Barth (HS-Rhe<strong>in</strong>Ma<strong>in</strong>) Programmieren 3 29. Januar 2013 191 / 326<br />

Prof. Dr. Peter Barth (HS-Rhe<strong>in</strong>Ma<strong>in</strong>) Programmieren 3 29. Januar 2013 192 / 326

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!