Dieser Blogartikel gibt eine Übersicht über die verschiedenen Basis-Datentypen in Python und richtet sich damit an die Python-Einsteiger. Es gibt gar nicht so viele verschiedene Python-Datentypen und jeder, der in Python programmiert, sollte diese Typen kennen. Je nach genutztem Package gibt es natürlich noch andere. Wer Data Science in Python lernen möchte, kommt an NumPy und dessen schnelles Array nicht herum. Also los geht’s.

Als erstes brauchen wir natürlich die Möglichkeit, Zahlen und Wörter (Strings, Zeichenketten) in entsprechenden Variablen zu speichern. Dann erweitern wir diese zu Kombinationen, also Listen, Tupel und Mengen von Variablen sowie sogenannten Dictionaries (Lexika), welche man sich tatsächlich wie ein Lexikon oder Index vorstellen kann.

Die wichtigsten Datentypen in Python

 

Benennung von Variablen

Ok, man kann seine Python-Variablen ziemlich beliebig benennen, es gibt aber ein paar Regeln. Die wichtigste Regel ist natürlich, eure Variablen sinnvoll zu benennen, so dass ihr euch noch zurecht findet, wenn ihr den Code in einem Jahr nochmal anschaut.

Ansonsten gelten folgende Einschränkungen:

  • Es sind nur Buchstaben (a-z, A-Z), Zahlen (0-9) und der Unterstrich _ erlaubt
  • Variablen dürfen nicht mit einer Zahl anfangen, also 9a ist verboten
  • Python beachtet Groß- und Kleinschreibung, d.h. Abc und abc sind zwei unterschiedliche Variablen
  • Es gibt ein paar reservierte Schlüsselwörter, die nicht verwendet werden dürfen, da sie schon für andere Zwecke reserviert sind:
and continue except global lambda pass while
as def False if None raise with
assert del finally import nonlocal return yield
break elif for in not True
class else from is or try
Datenanalyse mit Python - 5 Tage Minikurs
In dem kostenlosen 5-Tage Minikurs Datenanalyse mit Python analysieren wir zusammen einen realen Datensatz: Von der richtigen Entwicklungsumgebung über erste Zusammenfassungsstatistiken mit pandas bis hin zu linearer Regression und schicken Grafiken mit seaborn.

Variablendeklaration in Python

Man muss Variablen in Python nicht deklarieren, also den Datentyp mit angeben, wie das in anderen Programmiersprachen wie C der Fall ist.

In Python schreibt man also einfach a=3. Python erkennt automatisch, dass es sich um eine ganze Zahl handelt und weist a den Variablentyp int zu. In C müsste man den Typ mit angeben also int a = 3;

Die automatische Typendeklaration macht es für den Programmierer einfacher, weil er sich nicht darum kümmern muss. Es hat aber auch Nachteile, denn die explizite Angabe gibt uns mehr Kontrolle. So können in Python zum Beispiel keine Konstanten (also nicht änderbare Variablen) definiert werden. Der Programmierer muss selber darauf achten, den Wert nicht zu verändern.

 

Numerische Datentypen in Python

Es gibt drei Arten von Zahlen in Python

  • int ist für ganze Zahlen, also z.B. 2, 3, 10, 100, 10000000, -5, -10000
  • float ist für Dezimalzahlen (Kommazahlen), also z.B. 3.14, 1.9999, -0.96424, 10.23. Beachte, dass als Dezimaltrennzeichen der Punkt statt des Kommas verwendet wird (englische Konvention)
  • complex ist für komplexe Zahlen, welche aus Real- und Imaginärteil bestehen. Wenn Du nicht weißt, was das ist, macht das nichts. Dann benötigst Du diesen Datentyp vermutlich auch nicht.

Die zulässige Größe ist im Gegensatz zu vielen anderen Programmiersprachen nicht beschränkt, sondern hängt nur vom Speicherplatz ab.

Wie im vorherigen Abschnitt geschrieben, müsst ihr euch in Python nicht explizit um den Typ kümmern, d.h. wenn ihr a = 3 eingebt, dann wird a eine Variable vom Typ int. Wenn ihr a = 3.0 eingebt, dann wird a eine Variable vom Typ float.

############################################
# Zahlen
############################################
 
# Integer-Variablen (ganze Zahlen) definieren
a = 3
b = -10
c = 100000000000000000000000000000000000000000000000000
d = a
a = -2
 
# Float-Variablen (Kommazahlen) definieren
fa = 3.14
fb = -0.9999999999999
# Exponentialschreibweise -5e-5 = -5 * 10^3 = -5 * 1000 = -5000
fc = -5e3
 
# complex-Variablen (komplexe Zahlen) definieren
w = 3 + 2j
z = 1j
 
# gleichzeitige Zuweisung mehrerer Variablen
i, j, k = 10, 20, 3.14

Strings / Zeichenketten

Jede Programmiersprache kann Zeichenketten in Variablen speichern, so auch Python. Und das ist genau simpel wie bei Zahlen, nämlich einfach die Zeichenkette, die ihr speichern wollt in Anführungsstriche, egal ob einfache oder doppelte, verpacken. Also s = „Hallo“ bzw.  s= ‚Hallo‘.

Für die Länge eines Strings s gibt es die Funktion len(s). Einzelne Zeichen eines Strings könnt ihr mit eckigen Klammern ansprechen, so gibt z.B. s[0] das erste Zeichen zurück oder s[0:2] die ersten zwei Zeichen. Achtung: In Python beginnt die Zählweise mit 0 und bei einer Folge wie 0:2 ist das rechte Element nicht mehr dabei, d.h. 0:2 entspricht den Werten 0 und 1, also das 1. und das 2. Zeichen des Strings

############################################
# Strings
############################################
 
s1 = "Hello"
s2 = "databraineo!"
s2 = s1
s1 = "Ola"
s3 = 'auch ein String'
 
s2[0]
s2[1:]
len(s2)
 
#Sonderzeichen
# \ wird als Start für Escape-Sequenz erkannt, \t als Tab
print('C:\temp')
# für den Backslash benötigen wir also \\
print('C:\\temp')
#raw string
s4 = r'C:\\temp'
#
#mehrzeiliger String
s5 = """abc
def
ghi"""
print(s5)
 
# einen String als Unicode definieren
s6 = u"Das hier ist Unicode"
Datenanalyse mit Python – 5 Tage Minikurs
In dem kostenlosen 5-Tage Minikurs Datenanalyse mit Python analysieren wir zusammen einen realen Datensatz: Von der richtigen Entwicklungsumgebung über erste Zusammenfassungsstatistiken mit pandas bis hin zu linearer Regression und schicken Grafiken mit seaborn.

Listen, Tupel, Mengen

Ihr wollt mehrere Elemente abspeichern, dann braucht ihr Listen, Tupel oder Mengen. Zusammengefasst sind Listen eben eine (geordnete) Liste von Elementen. Die einzelnen Elemente lassen sich über einen Index ansprechen. Tupel sind fast das gleiche wie eine Liste, nur lassen sich die einzelnen Elemente nicht mehr verändern. Mengen sind nicht geordnet und haben keine doppelten Elemente.

Listen in Python

Dabei sind Listen sicherlich die wichtigste Struktur. Eine Liste wird mit eckigen Klammern definiert und besteht aus einer Folge von Elementen, die sogar von unterschiedlichen Typen sein können. Also zum Beispiel l1 = [1, 2, 3] oder l2 = [„grün“, 3.14, 2].

Die Elemente der Liste lassen sich über die Indizes ansprechen. Im Prinzip genauso wie die einzelnen Zeichen eines Strings. Und wieder gilt, dass wir bei 0 mit dem Zählen anfangen. Also l1[0] gibt das 1. Element zurück, in dem Fall 1. l2[0] würde „grün“ zurückgeben.

Listen können beliebige Datentypen enthalten, auch wieder Listen. l3 = [[1,2], „grün“, [3.0,3.1,3.2]]

Vorsicht beim Kopieren von Listen: Wenn man mit l2 = l1 eine Liste „kopiert“, wird keine echte Kopie gemacht, sondern nur der sogenannte Zeiger auf die Liste kopiert. Verändere ich die ursprüngliche Liste l1, dann verändert sich damit auch l2. Um eine echte Kopie zu machen, verwendet man l2 = l1.copy().

Tupel in Python

Tupel sind im Gegensatz zu Listen nicht mehr veränderbar, d.h. im Nachhinein können keine Elemente eines Tupels geändert werden. Ansonsten verhalten sie sich genauso wie Listen. Tupel werden mit runden Klammern initialisiert, also z.B. t1 = (1, 2, 3).

Mit t1[1] greift ihr auf das 2. Element zurück, hier also 2. Nicht erlaubt ist t1[1] = 9, da wie eben geschrieben, Tupel nicht veränderbar sind.

Mengen in Python

Vermutlich eher ein selten genutztes Konstrukt. Mengen enthalten eindeutige Elemente, also keine doppelten Einträge, und sind nicht geordnet. D.h. im Gegensatz zu Listen oder Tupel können wir die Elemente nicht mit einem Index abrufen. Mengen werden in Python mit geschweiften Klammern gebildet. also z.B. m1 = { „grün“, „rot“, „blau“}

############################################
# Listen, Tupel, Mengen
############################################
alist = [1,2,3,4]
alist
atuple = (1,2,3,3)
atuple
aset = {'grün','gelb','rot','rot'}
aset
 
# Elemente einer Liste können geändert werden
alist[2] = 9.34
alist[3] = 'grün'
alist[0] = ['gelb',-2e-2,5]
len(alist)
 
# Elemente eines Tuples können nicht geändert werden
atuple[0] = 9
btuple = atuple + ('grün',2.1,[-3,-2,0])
btuple[6]
btuple[6][2] = 9
len(btuple)
 
# Mengen sind nicht geordnet
aset[0]
'grün' in aset
aset.add('lila')
aset.remove('grün')
 
# Listen werden nicht kopiert, sondern zeigen auf das gleiche Objekt
blist = [1,2,3]
clist = blist
clist[0]
blist[0] = 9
clist[0]
# echte Kopien erstellen
dlist = blist.copy()
dlist = list(blist)

 

Python Dictionaries

Ein Dictionary kann man sich, wie der Name sagt, als Lexikon vorstellen, d.h. es gibt einen Schlüsselbegriff (key), dem etwas zugeordnet wird. Beim normalen Lexikon wäre es eine Erklärung des Schlüsselbegriffs, beim dictionary können es aber beliebige Datentypen sein. Wie schon bei Listen, Tupeln oder Mengen können auch dictionaries verschachtelt sein.

Ein Dictionary wird wie eine Menge per geschweiften Klammern definiert, allerdings bestehen die Einträge aus dem Schlüssel, gefolgt von Doppelpunkt und dann dem Wert.

Die einzelnen Einträge werden dann anstatt über einen Index über den Schlüssel angesprochen. So können die Einträge auch geändert werden. Wenn man alle Werte des Dictionaries dic als Liste bekommen will, benutzt man die Funktion values, also list(dic.values()). Beachtet, dass wir noch list davor schreiben müssen, um auch wirklich eine Liste zu bekommen. Genauso funktioniert es mit den Schlüsseln, also list(dic.keys()).

Sehr praktisch sind dictionaries, wenn mehrere Eigenschaften eines Objekts gespeichert werden sollen. Zum Beispiel soll für einen Kunden Name, Vorname und Alter gespeichert werden.

############################################
# Dictionaries
############################################
dic = { 'E1':'Sofa','E2':'Stuhl','E3':'Tisch' }
print(dic)
dic['E1']
dic[0]
dic.values()
dic.keys()
 
dic = { 1:'Sofa',2:'Stuhl',3:'Tisch' }
dic[1]
 
 
Kunde = {'Vorname':'Kevin', 'Name': 'Chalupke', 'Alter': 32}
print(Kunde['Name'])
print(Kunde['Alter'])
Kunde['Alter'] = 33

 

Den Datentyp einer Variable abfragen

Um zu prüfen, welchen Datentyp eine Variable x hat, gibt es den Befehl type(x). Mit isinstance(x,typ) wird geprüft, ob x vom angegebenen Typ ist. Es wird also True oder False zurückgegeben

Python Datentypen umwandeln

Das Umwandeln von Datentypen in Python ist ziemlich intuitiv. Man benutzt einfach den Datentyp als Funktion und als Parameter kommt die umzuwandelnde Variable.

  • int zu float: float(3)
  • float zu int: int(3.14)
  • int zu string: str(3)
  • string zu int: int("3")
  • float zu string: str(3.14)
  • string zu float: float("3.14")

Auch die drei zusammengesetzten Typen List, Tuple und Set lassen sich so ineinander überführen

  • list zu tuple: tuple(l)
  • tuple zu list: list(t)
  • list zu set: set(l)
  • set zu list: list(s)
  • tuple zu set: set(t)
  • set zu tuple: tuple(s)

Nur das Dictionary fällt aus der Reihe, denn Python kann ja nicht wissen, wie es z.B. eine Liste in ein Dictionary umwandeln soll, denn es fehlen die Schlüssel. Andersherum funktioniert es: aus einem Dictionary kann man eine Liste/Tupel/Menge machen, allerdings werden nur die Schlüssel verwendet.

############################################
# Datentypen umwandeln 
############################################
 
# int schneidet die Dezimalstellen ab
x = 3.14
int(x)
int(3.6)
int(-0.9)
 
 
float(3)
float("3.14")
 
int("3")
# ein String einer Dezimalzahl kann nicht in einen int umgewandelt werden
int("3.14")
int(float("3.14"))
 
str(10)
str(10.34)
 
# Listen, Tupel und Mengen lassen sich ineinander überführen
tuple(alist)
list(atuple)
set(alist)
set(atuple)
list(aset)
tuple(aset)
 
 
# Wenn man ein Dictionary in eine Liste/Tupel/Menge umwandelt, wird
# der Schlüssel (Key) in das entsprechende Objekt umgewandelt
list(dic)
tuple(dic)
set(dic)
list(Kunde)

 

So, das war es mit den wichtigsten Datentypen in Python. Eigentlich nicht so schwierig, oder?

Hat Euch der Beitrag gefallen? Dann schreibt mir einen Kommentar oder teilt den Artikel, damit andere auch etwas davon haben.

Happy coding,

Euer Holger

Datenanalyse mit Python - 5 Tage Minikurs
In dem kostenlosen 5-Tage Minikurs Datenanalyse mit Python analysieren wir zusammen einen realen Datensatz: Von der richtigen Entwicklungsumgebung über erste Zusammenfassungsstatistiken mit pandas bis hin zu linearer Regression und schicken Grafiken mit seaborn.