Datentypen in Python

Ähnliche Dokumente
Funktionen in Python

Funktionen in Python

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python

A2.1 Python. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A2.1 Python. A2.2 Kurzer Sprachüberblick. A2.3 Selectionsort in Python

Ausnahmen-Behandlung

Algorithmen und Datenstrukturen

Algorithmik und Programmieren

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

4 Daten in Python. Primäres Ziel: Daten zu Containern zusammenfassen, insbesondere Vektoren etc., um vernünftige Beispiele rechnen zu können.

Python Workshop i. Python Workshop

Informatik I. Informatik I Dictionaries Mengen Dictionaries. Dictionaries. 11. Dictionaries & Mengen.

Einführung in Python. Übung zur Vorlesung NLP Beate Krause, Dominik Benz NLP-Übung: Einführung in Python 1

WS2017/ Oktober 2017

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

WS2018/ Oktober 2018

Programmieren in Python

Teil II. Datentypen. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/

Programmierkurs Python I

Python als praktischer Helfer

Programming 101. Carl Herrmann IPMB & DKFZ

16. Dynamische Datenstrukturen

Anweisungen in Python

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmieren in Python 7. Dictionaries, Mengen & Dateien

Programmierkurs Python I

Einführung in die Programmiertechnik

Python Zahlen, Strings Logik Kontrollstrukturen. Scriptsprachen. Python Basics. Sascha Winter

Programmierkurs Python I

Programmieren in Python

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Programmierung in Python

Programmieren in Python

Programmieren in Python

Nachtrag: Vergleich der Implementierungen von Stack

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Python für Linguisten

Java I Vorlesung Imperatives Programmieren

Teil V. IO und weitere Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Übungszettel 2a - Python

Crashkurs Python und Sage U23 Krypto-Mission

Informatik I. Informatik I Iteratoren Generatoren Das Modul itertools. Iterierbare Objekte Iteratoren. Python-Interpreter

Stream EDitor SED und Reguläre Ausdrücke

Algorithmen und Programmieren II Einführung in Python (Teil 2)

Funktionales Programmieren in Python

Angewandte Mathematik und Programmierung

Informatik I: Einführung in die Programmierung

WS2018/ Oktober 2018

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion

Python-Workshop. Python für C/C++ Programmierer. Carl Friedrich Bolz. Carl Friedrich Bolz

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Algorithmik und Programmieren

Einfügen immer nur am Kopf der Liste Löschen auch nur an einem Ende (2 Möglichkeiten!)

Einstieg in die Informatik mit Java

Weather forecast in Accra

Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I.

13. Dynamische Datenstrukturen

Algorithmen und Programmieren II Einführung in Python

1 Klassen anlegen und Objekte erzeugen

Programmieren in Python

Programmierkurs Python I

Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2018

Abstrakte Datentypen und deren Implementierung in Python

4.3 Keller und Warteschlangen

Stack. Queue. pop() liefert zuletzt auf den Stack gelegtes Element und löscht es push( X ) legt ein Element X auf den Stack

Vorkurs Informatik WiSe 16/17

WS2017/ Oktober 2017

Grundlagen der Programmierung - Datenstrukturen

Data Structures. Christian Schumacher, Info1 D-MAVT Linked Lists Queues Stacks Exercise

Listenverarbeitung in Python

1. Die rekursive Datenstruktur Liste

1 Klassen anlegen und Objekte erzeugen

Einstieg in die Informatik mit Java

Transkript:

Wintersemester 2009/2010

1 Datentypen 2 Zahlen 3 Strings 4 Tupel 5 Listen 6 Dictonaries 7 Mengen 8 Dateien

Datentypen Zahlen Strings Tupel Listen Dictonaries Dateien Mengen Frozen Sets

Dynamische Typisierung Dynamische Typisierung (Wikipedia) Bei der dynamischen Typisierung (engl. dynamic typing) erfolgt die Typzuteilung der Variablen zur Laufzeit eines Programmes durch das Laufzeitsystem, z.b. eine virtuelle Maschine.

Dynamische Typisierung in Python Das assignment statement erzeugt ein Variable und weist ihr einen Wert zu. Keine Deklaration notwendig. Wert bestimmt Variablen Typ.

Typ Konvertierung type Funktion liefert Typ zurück. str list tupel int long float complex set frozenset

Mehrfachzuweisung >>> a=b=c=69 >>> print a 69 >>> print b 69 >>> print c 69

Python Keywords Python Keywords >>> import keyword >>> keyword.kwlist [ and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield ] >>> len(keyword.kwlist) 31

Zahlen Integers Long integers Floats Complex Numbers

Integers >>> 0xF 15 >>> 011 9 Ganzzahlen 0x für Hex 0 für Oktal Explizte Konversion mit Funktion int()

Long Integers Ganzzahlen mit beliebiger Länge Suffix L Explizte Konvertierung mit Funktion long()

Beliebig Lange Ganzzahlen >>> 2**64 18446744073709551616L >>> 2**128 340282366920938463463374607431768211456L

Floats Gleitkommazahlen E Schreibweise möglich Explizte Konvertierung mit Funktion float()

Ganzzahl Artithmetik >>> 23+42 65 >>> 23-42 -19 >>> 23*42 966 >>> 23/42 0 Vorsicht: Geändertes Verhalten ab Python 3!

Implizite Konvertierung >>> 23.0/42.0 0.54761904761904767 >>> 23/42.0 0.54761904761904767

Komplexe Zahlen Komplexe Zahlen werden als zwei Fliekommazahlen dargestellt. Imaginäre Zahlen werden mit dem Suffix j oder J gekennzeichnet. complex(real,imag) ergibt real+imagj z.real liefert den Real-Teil. z.imag liefert den Imaginär-Teil.

Komplexes Rechnen >>> 1j**2 (-1+0j) >>> (1+1j)*(2+1j) (1+3j) >>> (1+1j)*2 (2+2j)

Strings Unveränderlich Sequenz von Zeichen

Strings Strings können mit einfachen (... ) oder doppelten (... ) Anführungszeichen angegeben werden. Der Backslash maskiert Anführungszeichen. Bei dreifache Anführungszeichen muss das Zeilenende (engl. EOL) nicht maskiert werden.

Dreifache Anführungszeichen >>> mailsignature="""... "Ich bin gegen Studiengebuehren, denn sie belasten die Studenten... waehrend des Studiums. Also in einer Zeit, in der sie Untersuetzung... noetig haben. Das schreckt ab.", Juergen Ruettgers... """ >>> print mailsignature "Ich bin gegen Studiengebuehren, denn sie belasten die Studenten waehrend des Studiums. Also in einer Zeit, in der sie Untersuetzung noetig haben. Das schreckt ab.", Juergen Ruettgers

Excape Sequenzen \... Der Backslash ermöglicht die Eingabe von Escape-Sequenzen. \ : \ : \n : newline \t : tab \\ : \...

Backslashen >>> print "\" File "<stdin>", line 1 print "\" ^ SyntaxError: EOL while scanning single-quoted string >>> print "\\" \ >>> print "\\\" File "<stdin>", line 1 print "\\\" ^ SyntaxError: EOL while scanning single-quoted string >>> print "\\\\" \\

Raw Strings r String Escape-Sequenzen werden nicht intepretiert. Reguläre Ausdrücke Verwenden sie grundsätzlich raw Strings, wenn sie mit regular expressions arbeiten.

String Operatoren String Operatoren +: Konkatenation *: Wiederholung Indexing Slicing

Eingebaute String Funktionen Built ins len: Länge in: Enthalten-Test <, > : Lexigraphische Vergleiche

String Indizierung Strings können analog zu C beginnend mit dem Index 0 indiziert werden. >>> wort="wedding" >>> wort[0] W >>> wort[3] d

Teilbereichnotationen >>> vorlesung="systemprogrammierung" >>> vorlesung[4:6] em >>> vorlesung[:3] Sys >>> vorlesung[4:] emprogrammierung >>> len(vorlesung) 20

Negativ Indizierung >>> w="hopla" >>> w[-1] a >>> w[-2:] la >>> w[:-2] Hop

Indizierung +---+---+---+---+---+ H o p l a +---+---+---+---+---+ 0 1 2 3 4 5-5 -4-3 -2-1

Tupel Unveränderlich. Achtung: Tupel können veränderliche Elemente enthalten. Sequenz mit beliebigene Elementen. Schachtelung möglich Einschluss durch ( ) Trennung durch,

Sonderfälle () : Leerer Tuppel (elment, ) : Einelementiges Tuppel

Tupel Operatoren Tupel Operatoren +: Konkatenation *: Wiederholung Indexing Slicing

Eingebaute Tupel Funktionen Built ins len: Länge in: Enthalten-Test <, > : Lexigraphischer Vergleiche

Tupel Zuweisung >>> a,b,c=1,2,3 # Zuweisung der Reihe nach >>> print a,b,c 1 2 3 >>> a,b=b,a # Vertauschen ohne Hilfsvariable >>> print a,b 2 1

Listen Veränderlich. Sequenz mit beliebigene Elementen. Beliebige Länge Schachtelung möglich Einschluss durch [ ] Trennung durch,

Listen Operatoren Listen Operatoren +: Konkatenation *: Wiederholung Indexing Slicing

Eingebaute Listen Funktionen Built ins len: Länge in: Enthalten-Test <, > : Lexigraphischer Vergleiche

Änderungen in Listen Änderungen Indexierte Zuweisung Indexiertes Löschen mit del

Zahlenlisten mittels range range range(ende) liefert Zahlenliste von 0 bis Ende-1 mit Schittweite 1. range(begin,ende) liefert Zahlenliste zwischen Begin und Ende-1 mit Schittweite 1. range(begin,ende,schrittweite) liefert Zahlenliste zwischen Begin und Ende-1 mit angebebener Schittweite.

Listen Methoden: Elementprüfung Elementprüfung liste.index(x) liefert den Index des ersten Elements in der Liste zurück, dessen Wert gleich x ist. Falls kein Element mit Wert x existiert wird ein ValueError: list.index(x): x not in list. geworfen. liste.count(x) liefert die Anzahl des Auftretens des Elements x in der Liste zurück.

Listen Methoden: Sortieren Sortieren liste.sort() sortiere die Elemente der Liste. liste.reverse() invertiert die Reihenfolge der Listenelemente.

Listen Methoden: Einfügen und Löschen Einfügen und Löschen liste.insert(i, x) fügt das Element x vor den Index i ein. liste.append(x) fügt das Element x am Ende der Liste an. liste.append(x) ist äquivalent zu a.insert(len(a), x). liste.remove(x) entferne das erste Element mit dem Wert x aus der Liste. Falls kein Element mit Wert x existiert, liefert die remove Methode ValueError: list.remove(x): x not in list

Beispiel Einfügen und Löschen >>> liste=[1,2,3] >>> liste.insert(2,"vier") >>> liste [1, 2, Vier, 3] >>> liste.append(1) >>> liste [1, 2, Vier, 3, 1] >>> liste.remove(4) Traceback (most recent call last): File "<stdin>", line 1, in? ValueError: list.remove(x): x not in list >>> liste.remove(1) >>> liste [2, Vier, 3, 1]

Listen in Tupel Listen in Tupel bleiben veränderlich. >>> tup=(1, [ Liste, 2], String ) >>> tup[0]=42 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: tuple object does not support item assignment >>> tup[1][1]=42 >>> tup (1, [ Liste, 42], String )

Dictonaries Dictonaries sind Abbildungen von unveränderlichen Schlüssel zu beliebigen Werten. {Schluessel : Wert} Trennung durch Komma

Indizierung Indizierung durch unveränderliche Objekte Integers Tupel Strings Kein Slicing.

Anlegen >>> de2eng={} >>> de2eng[ eins ]= one >>> de2eng[ drei ]= three >>> de2eng[2]= two >>> de2eng { drei : three, 2: two, eins : one }

Zugreifen und Löschen >>> de2eng[ eins ] one >>> del de2eng[2] >>> de2eng { drei : three, eins : one } >>> de2eng[ drei ]=3 >>> de2eng { drei : 3, eins : one }

Dictonaries Methoden >>> de2eng.keys() [ drei, eins ] >>> de2eng.values() [3, one ] >>> de2eng.items() [( drei, 3), ( eins, one )] >>> de2eng.has_key( eins ) True >>> de2eng.has_key( Eins ) False

Referenzsematik Unterschiedliche Referenzsematik für Unveränderliche Objekte Zahlen Strings Tupel Veränderliche Objekte Listen Dictories

Unveränderliche Objekte Zuweisung erzeugt ein neues Objekt. >>> a=1 >>> b=a >>> a,b (1, 1) >>> a=a+1 >>> a,b (2, 1)

Veränderliche Objekte Zuweisung erzeugt Referenz. >>> a=[1,2,3] >>> b=a >>> a,b ([1, 2, 3], [1, 2, 3]) >>> a[0]= neua >>> a,b ([ neua, 2, 3], [ neua, 2, 3]) >>> b[1]= neub >>> a,b ([ neua, neub, 3], [ neua, neub, 3])

Dictonaries >>> d={1:42,2:23} >>> d {1: 42, 2: 23} >>> a=d >>> d[4]=69 >>> d {1: 42, 2: 23, 4: 69} >>> a {1: 42, 2: 23, 4: 69}

set, frozenset http://docs.python.org/lib/types-set.html A set object is an unordered collection of immutable values. set mutable frozenset immutable

set, frozenst Operations len(s) cardinality of set s x in s test x for membership in s x not in s test x for non-membership in s s.issubset(t) test whether every element in s is in t s.issuperset(t) test whether every element in t is in s

set, frozenset Operations (II) s.union(t) new set with elements from both s and t s.intersection(t) new set with elements common to s and t s.difference(t) new set with elements in s but not in t s.symmetric difference(t) new set with elements in either s or t but not both s.copy() new set with a shallow copy of s

set Operations (I) s.update(t) update set s, adding elements from t s.intersection update(t) update set s, keeping only elements found in both s and t s.difference update(t) update set s, removing elements found in t s.symmetric difference update(t) update set s, keeping only elements found in either s or t but not in both s.add(x) add element x to set s

set Operations (II) s.remove(x) remove x from set s; raises KeyError if not present s.discard(x) removes x from set s if present s.pop() remove and return an arbitrary element from s; raises KeyError if empty s.clear() remove all elements from set s

Beispiel Mengen >>> a=set([1,2,2,"hallo"]) >>> a set([1, 2, Hallo ]) >>> a.update( Python ) >>> a set([1, 2, Hallo, h, o, n, P, t, y ]) >>> b=set((1,2,"t")) >>> a.intersection_update(b) >>> a set([1, 2, t ])

Datentyp file Öffnen r : read w : write a : append read : Einlesen in String readlines : Zeilenweise einlesen in Liste von Strings

Öffnen und Schliessen >>> f=open( datei.txt, w ) >>> print f <open file datei.txt, mode w at 0xb7df7338> >>> f.close()

Lesen und Schreiben >> f=open( datei.txt, w ) >>> f.write("python: ride the snake.") >>> f.close() >>> f=open( datei.txt, r ) >>> text = f.read() >>> print text Python: ride the snake. >>> f.close()

Exkurs: Persistente Objekte http://docs.python.org/lib/persistence.html pickle : Convert Python objects to streams of bytes and back. cpickle : Faster version of pickle, but not subclassable. copy reg : Register pickle support functions. shelve : Python object persistence. marshal : Convert Python objects to streams of bytes and back (with different constraints). anydbm : Generic interface to DBM-style database modules. whichdb : Guess which DBM-style module created a given database.

Exkurs: Persistente Objekte (II) dbm : The standard database interface, based on ndbm. gdbm : GNU s reinterpretation of dbm. dbhash : DBM-style interface to the BSD database library. bsddb : Interface to Berkeley DB database library dumbdbm : Portable implementation of the simple DBM interface. sqlite3 : A DB-API 2.0 implementation using SQLite 3.x.

pickle pickle Modul import pickle pickle.dump() pickle.load()

pickle Beispiel >>> x=["liste","mit",("tupeln","zum","beispiel")] >>> import pickle >>> f=open("picklebsp","w") >>> pickle.dump(x,f) >>> f.close() >>> g=open("picklebsp") >>> y=pickle.load(g) >>> y [ Liste, mit, ( Tupeln, zum, Beispiel )]

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