Funktionales Programmieren in Python



Ähnliche Dokumente
Erwin Grüner

Funktionale Programmierung mit Haskell

Beispiel 19. December 4, 2009

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) Seite 1

Java Kurs für Anfänger Einheit 5 Methoden

Programmierung I Einführung in Python, Beyond the Basics

Kosten-Leistungsrechnung Rechenweg Optimales Produktionsprogramm

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Funktionale Programmierung

Celery Eine asynchrone Task Queue (nicht nur) für Django. Markus Zapke-Gründemann Leipzig Python User Group

Algorithmen mit Python

Kontrollstrukturen, Strukturierte Programmierung

Übungen für Woche 10

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Einführung in die Programmierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Tagesprogramm

Beschreibung der Umstellungsschritte für moneyplex (neue Benutzerkennung und Kommunikationsadresse)

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Codes und Informationsgehalt

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Einführung in die Programmierung

Anweisungen in Python

Verkaufsstätten. Dipl.- Ing.(FH) M.Eng.(TU) Thomas Höhne

Computeranwendung und Programmierung (CuP)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Java-Programmierung mit NetBeans

Programmierkurs Java

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Skriptsprachen am Beispiel Python

Funktionale Programmierung mit C++

Modellierung und Programmierung 1

Prüfung Computation, Programming

C/C++ Programmierung

Graphic Coding. Klausur. 9. Februar Kurs A

Programmierung in Python

Übersicht Programmablaufsteuerung

VIDA-LOGDATEIEN VIDA ALL-IN-ONE

Prozedurale Datenbank- Anwendungsprogrammierung

Software Maintenance - Musterlösung zum Übungsblatt 1

Programmierkurs Python I

Fragebogen: Rätoromanisch

Objektorientierte Programmierung

Luis Kornblueh. May 22, 2014

Client-Server-Beziehungen

public class SternchenRechteckGefuellt {

Programmierparadigmen

Anzeige von eingescannten Rechnungen

Dokumentation für das Spiel Pong

Beispiel Aufrufreihenfolge einmalige Netzdaten als Leermeldung:

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Funktionen in Python

Programmieren in Haskell Einführung

AW: AW: AW: AW: Kooperationsanfrage anwalt.de

SMTP Sieve-Interpreter

Java Einführung Operatoren Kapitel 2 und 3

Stepperfocuser 2.0 mit Bootloader

Softwarelösungen: Versuch 4

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

1 Mathematische Grundlagen

Visual Basic Express erstes Projekt anlegen

Universität Augsburg, Institut für Informatik Wintersemester 2011/2012 Prof. Dr. W. Kießling 03. Feb Semesterklausur

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

1 Belastung. 1.1 Standortbestimmung 1.2 Belastungsvorhersage 1.3 Favoriten

Funktionen in Python

Vorkurs: Mathematik für Informatiker Steven Köhler, Anja Moldenhauer, Marcel Morisse

Kontrollstrukturen - Universität Köln

Whitebox-Tests: Allgemeines

Semantic Web Grundlagen

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert Christoph Knabe

SEQUENZDIAGRAMM. Christoph Süsens

Softwarelizenzen und Open Source

Informatik Repetitorium SS Volker Jaedicke

Import und Export von Übergängern

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Leere Zeilen aus Excel-Dateien entfernen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Algorithmen und Datenstrukturen

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Scala kann auch faul sein

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

ALP I. Funktionale Programmierung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Internet online Update (Mozilla Firefox)

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Deutsche SPV und TSI Verbriefungsplattform

Navigation. Drucken Klicken Sie auf ein Symbol, um nähere Informationen zu erhalten. Papierhandhabung Anzeigen der Online-Informationen

3 Open BIM Workflow ARCHICAD und Allplan

Vorgehensweise bei Lastschriftverfahren

Klausur in Programmieren

Transkript:

Wintersemester 2008/2009

1 Funktionen sind Objekte 2 lambda Funktionen 3 apply 4 map 5 zip 6 filter 7 reduce 8 List Comprehension

Funktionales Programmieren Wer nicht funktional programmiert, programmiert disfunktional. Eleganter Syntax beinflusst von Haskell http://www.haskell.org/ Optional

MIT wechselt zu Python Waseem S. Daher, EECS Revamps Course Structure The difference is that programming will be done in Python and not Scheme. http://www-tech.mit.edu/v125/n65/coursevi.html

Funktionen sind Objekte Funktionen sind Objekte. Funktionen können Funktionen zurückliefern.

lambda lambda lambda [<arg>[,<arg>...]]:<ausdruck> Anonyme Funktion Ausdruck

Beispiel >>> lambda x:x**2 <function <lambda> at 0xb7df7e2c> >>> f=lambda x:x**2 >>> f <function <lambda> at 0xb7df7e64> >>> f(2) 4 >>> f=[lambda x:x**2,lambda x:x**3,lambda x:x**4] >>> f[0](42) 1764

apply apply apply(<funktion>,<tupel>) Äquivalent <funktion>(<tupel>) Primitive für Funktionales Programmieren

map map map(<funktion>,<sequenz>, [<sequenz>,...]) map ist Schlüsselwort. map wendet eine Funktion auf alle Elemente einer Sequenz an. Als Ergebnisse wird eine Liste mit den Funktionsergebnissen zurückgeliefert.

Beispiel: map >>> map(ord, Spam ) [83, 112, 97, 109] >>> map(lambda x:x*x*x,range(10)) [0, 1, 8, 27, 64, 125, 216, 343, 512, 729] >>> map(none, Lumberjack ) [ L, u, m, b, e, r, j, a, c, k ]

zip Funktion zip zip(<sequenz>, [<sequenz>,...]) zip ist eingebaute Funktion. zip liefert eine Liste von Tupeln zurück in der das i-te Tupel aus den i-ten Elementen der Eingabesequenzen besteht.

Beispiel: zip >>> zip([1,2,3],[ a, b, c ]) [(1, a ), (2, b ), (3, c )] >>> map(none,[1,2,3],[ a, b, c ]) [(1, a ), (2, b ), (3, c )] >>> zip([1,2],[ a, b, c ]) [(1, a ), (2, b )] >>> zip([1,2]) [(1,), (2,)]

filter filter filter(<funktion>, <sequenz>) filter ist Schlüsselwort. filter gibt eine Liste von Elementen der Eingabesequenz zurück, für welche die Funktionanwendung True liefert.

Beispiel: filter >>> # Liste aller geraden Zahlen zwischen 0 und 24... filter(lambda x: x%2==0,range(25)) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24] >>> # Liste aller ungeraden Zahlen zwischen 0 und 24... filter(lambda x: x%2!=0,range(25)) [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]

Beispiel: Primzahlen def prim(x): from math import sqrt if (x==0) or (x==1): return False else: for i in range(2,int(sqrt(x))+1): if x%i == 0: return False return True >>> filter(prim,xrange(50)) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

reduce reduce reduce(<funktion>, <sequenz>) reduce ist Schlüsselwort. reduce wendet von links nach rechts nacheinander eine Funktion mit zwei Argumenten auf alle Elemente der Sequenz an bis eine einzelner Wert entsteht. Falls die Sequenz nur einen einzigen Wert besitzt, wird der einzige Sequenzwert zurückgeliefert

Beispiel: reduce >>> reduce(lambda x,y:x+y,range(1,6)) 15 >>> ((((1+2)+3)+4)+5) 15 >>> reduce(lambda x,y:x*1000+y,[42]) 42

reduce mit Initialwert reduce mit Initialwert reduce(<funktion>, <sequenz>[, <initwert>]) Mit mit <initwert> kann ein Initialwert angegeben werden. Dieser wird der Sequenz vorangestellt. Falls die Sequenz nur einen einzigen Wert besitzt und kein Initialwert angegeben wird, wird der einzige Sequenzwert zurückgeliefert.

Beispiel: reduce mit Initialwert >>> reduce(lambda x,y:x*1000+y,[23,42]) 23042 >>> reduce(lambda x,y:x*1000+y,[42],23) 23042 >>> reduce(lambda x,y:x*1000+y,[42]) 42

List Comprehension List Comprehension [<ausdruck> [for <var> in <seq>... [if <bedingung>...] ] ] Listenbildung mit for und if Anweisung.

Äquivalente Schreibweisen l = [ expression for expr in sequence1 for expr2 in sequence2... for exprn in sequencen if condition] l = [] for expr1 in sequence1: for expr2 in sequence2:... for exprn in sequencen: if (condition): l.append(expression)

map,filter map(f, seq) [f(i) for i in seq] filter(f, seq) [i for i in seq if f(i)]

Beispiel: List Comprehenson >>> [x*x*x for x in range(1,11)] [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> [x*x*x for x in range(1,11) if x%3==0] [27, 216, 729]

c opyleft c opyleft Erstellt mit Freier Software c Rüdiger Weis, Berlin 2008 unter der GNU Free Documentation License.