4 in 1 - Medieninformatik - Hochschule RheinMain
4 in 1 - Medieninformatik - Hochschule RheinMain
4 in 1 - Medieninformatik - Hochschule RheinMain
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