Datentypen
Contents
Datentypen#
In Python stehen Ihnen, wie auch in anderen Programmiersprachen, für unterschiedliche Zwecke entsprechende Datentypen zur Verfügung. Jedes Objekt ist von einem bestimmten (Daten)Typ.
Überblick über Standardtypen#
Wir verwenden die englischen Namen der Standardtypen, da Sie diese auch so in der (interaktiven) Hilfe und beim Suchen im Internet finden.
Boolean: die logischen Wahrheitswerte
True
undFalse
Numeric Types: Integers (ganze, auch negative Zahlen), Floats (Dezimalzahlen), komplexe Zahlen
Sequences: Lists (Listen von anderen Daten), Tuples (unveränderbare Listen), Strings (Wörter inkl. Leerzeichen, Zeilenumbruch und Sonderzeichen)
Sets: Mengen
Dictionaries: Schlüssel-Objekt-Paare wie z. B. {“AT”: 1, “CH”:2, “DE”:3}
Functions: Input zu Output Transformationen
…
Boolean#
Eine Abfrage über größer (gleich), (un)gleich oder kleiner (gleich) liefert als Ergebnis ein Objekt vom Typ Boolean:
3 > 2 # greater
True
3 > 3
False
3 >= 3 # greater or equal
True
3 == 3.0 # equal
True
42 != 42 # not equal
False
Auch Wörter (Strings, siehe weiter unten) können verglcihen werden:
"Emil" == "emil"
False
Von welchem Typ ein Objejekt ist, können Sie mit der eingebauten Funktion type
bestimmen:
type(True)
bool
Numeric Types#
Ganze Zahlen: …, -3, -2, -1, 0, 1, 2, 3, … sind vom Typ int
.
n = 12
type(n)
int
Fließkommazahlen (=Dezimalzahlen) sind von Typ float
.
x = 12.3
type(x)
float
Komplexe Zahlen bestehen aus einen Realteil (int oder float) und einem Imaginärteil. Die imaginäre Einheit wird mit j
geschrieben und ohne Malzeichen *
an den Imaginärteil multipliziert.
z = 12.4 + 3.7j
type(z)
complex
Rechenoperationen:
x + 2*n
36.3
x - z
(-0.09999999999999964-3.7j)
12/5
2.4
vgl. Modulo-Rechnung
12//5
2
Achtung: Potenzieren mit **
und nicht mit ^
x**2
151.29000000000002
Sequences#
können Daten unterschiedlichen Typs enthalten
haben geordnete Elemente, Indizierung:
mit eckigen Klammern
beginnend bei 0
von Index a inklusive bis b exklusive mit
a:b
der letzte Eintrag hat den Index -1, der vorletzte Eintrag hat den Index -2, …
Lists:
verwenden eckige Klammern
sind veränderbar
numbers = [12, 12.3, 5, -8, 23]
numbers
[12, 12.3, 5, -8, 23]
type(numbers)
list
len(numbers) # Länge = Anzahl an Elementen
5
numbers[0] # erstes Element
12
numbers[-1] # letztes Element
23
# erstes Element neu setzen:
numbers[0] = 10
numbers
[10, 12.3, 5, -8, 23]
Slicing: nicht nur einzelne Elemente, sondern ganze Unterlisten “herausschneiden”
numbers[2:4]
[5, -8]
Achtung: Oben wars das Element mit Index 2 (das dritte Element) inklusive und das Element mit Index 4 (das fünfte Element) exklusive!
numbers[1:] # open end
[12.3, 5, -8, 23]
numbers[:3] # beginning from start
[10, 12.3, 5]
Anfügen ans Ende der Liste:
numbers.append(-3)
numbers
[10, 12.3, 5, -8, 23, -3]
Sortieren:
numbers.sort() # aufsteigend sortieren, mit Option reverse=True absteigend
numbers
[-8, -3, 5, 10, 12.3, 23]
Achtung: + und * bewirken Aneinanderkettung
numbers + numbers
[-8, -3, 5, 10, 12.3, 23, -8, -3, 5, 10, 12.3, 23]
3*numbers
[-8, -3, 5, 10, 12.3, 23, -8, -3, 5, 10, 12.3, 23, -8, -3, 5, 10, 12.3, 23]
Sie können überprüfen, ob ein Objekt in einer Liste vorkommt.
7 in [2, 3, 4, 5, 6, 7, 8, 9, 7] # incuded in
True
Tipp: list comprehension
[x**2 for x in numbers if x > 0]
[25, 100, 151.29000000000002, 529]
Tuples:
verwenden runde Klammern
sind nicht veränderbar
t = (3, 2, 5)
type(t)
tuple
# results in TypeError: 'tuple' object does not support item assignment
# t[1] = 10
Strings:
Wörter, Buchstaben und Wortketten, inkl. Sonderzeichen
einfache oder doppelte Anführungszeichen, dieselben zu Beginn und am Ende
veränderbar
Zeilenumbruch mit
\n
s1 = 'Hello \n'
s2 = "World!"
s1 + s2
'Hello \nWorld!'
print(s1 + s2)
Hello
World!
Formatierte Ausgabe:
n = 12
print("Die Wurzel aus {:d} ist circa {:8.5f}".format(n, n**0.5))
# Variante:
print("Die Wurzel aus %d ist circa %8.5f" %(n, n**0.5))
Die Wurzel aus 12 ist circa 3.46410
Die Wurzel aus 12 ist circa 3.46410