Container sind Datentypen in Python, die mehrere Variablen aufnehmen und den Zugriff darauf organisieren.
Listen
Listen hast du schon im letzten Teil kurz gesehen. Listen fassen mehrere Variablen des gleichen Typs zusammen (das ist aber mehr eine Konvention). In anderen Programmiersprachen werden Listen als Array verstanden. Daher leitet sich auch die Deklaration mit eckigen Klammern ab. Genauso geschieht der Zugriff auf die einzelnen Elemente.
namen = ["Homer", "Marge", "Bart"]
print(namen[0])
print(namen[1])
print(namen[2])
Die Elemente in der Liste werden mit 0 beginnend gezählt. Wie bei Strings liefert dir die len()
Funktion die Anzahl der Elemente.
Natürlich kannst du auch über eine Liste iterieren.
namen = ["Homer", "Marge", "Bart"]
for ind in range(0,len(namen)):
print(f'{ind}: {namen[ind]}')
Jetzt wird dir vielleicht auch klarer, warum for
immer nur bis zum Endwert-1 läuft, einfach deshalb, weil wir bei 0
zu zählen beginnen.
Liste erweitern
Im Gegensatz zu Arrays kannst du eine Liste um weitere Elemente erweitern
namen = ["Homer", "Marge", "Bart"]
namen.append('Lisa')
namen.append('Maggie')
print(namen)
Du kannst auch eine Liste um eine andere erweitern.
zahlen1 = ['0','1','2','3','4','5']
zahlen2 = ['6','7','8','9']
zahlen1.extend(zahlen2)
print(zahlen1)
Beachte dabei wird zahlen1
um zahlen2
erweitert und keine neue Liste gebildet.
Liste sortieren
Beim Zusammenfügen kann es passieren, das die Werte nicht in der korrekten Reihenfolge sind, also kann sort()
dies für dich übernehmen.
zahlen1 = ['0','1','4','3','2','5']
zahlen2 = ['8','7','9','6']
zahlen1.extend(zahlen2)
print(f'unsortiert:{zahlen1}')
zahlen1.sort()
print(f'sortiert:{zahlen1}')
Auch sort()
arbeitet innerhalb der Liste und erzeugt keine neue.
Element entfernen
Um ein Element aus der Liste zu entfernen benutzt du del
zahlen1 = ['0','1','4','3','2','5']
zahlen2 = ['8','7','9','6']
zahlen1.extend(zahlen2)
print(f'komplett:{zahlen1}')
zahlen1.sort()
del zahlen1[3]
print(f'nach del:{zahlen1}')
Nach der Sortierung wird das dritte Element aus der Liste gelöscht.Mit der pop()
Funktion kannst das letzte Element der Liste entfernen.
Tupel
Tupel kennst du vielleicht aus der Mathematik. Sie fassen mehrere Werte zu einer Einheit zusammen, z.B. Koordinaten. In Python funktionieren Tupel als Container ähnlich wie Listen, haben aber den großen Unterschied, dass sie unveränderlich sind (immutable). Deklariert werden sie mit runden Klammern.
coords = (51.2562,7.1508)
print(coords)
Die Koordinaten der besten Stadt der Welt 😉 können im weiteren Programmablauf nicht mehr verändert werden. Warum auch, die Stadt wandert ja nicht?
Mit Tupeln kannst du mehrere Werte auf einmal per return aus einer Methode zurückgeben.
def get_coords():
coords = (51.2562,7.1508)
return coords
print(get_coords())
Dictionaries
Dictionaries eignen sich hervorragend, Datenbankzeilen zu speichern, da sie einer ID ein Objekt zuordnen.
encoding utf-8
kfz = {
'W':'Wuppertal',
'HH':'Hamburg',
'D':'Düsseldorf',
'DO':'Dortmund',
'H':'Hannover',
'M':'München'}
print(kfz)
print(kfz['W'])
Du siehst hier, dass jedem Stadtnamen getrennt durch den Doppelpunkt ein KFZ-Kennzeichen zugeordnet wird. Da das Kennzeichen eindeutig ist, eignet sich es als Schlüssel. Über den Schlüssel kannst jetzt die abgelegten Daten abrufen
Prüfen, ob ein Schlüssel im Dictionary ist
Es ist sehr einfach, auf einen vorhandenen Schlüssel zu testen:
if 'W' in kfz:
print('ist enthalten')
Iteration über Dictionary
Durch ein Dictionary zu laufen ist etwas komplizierter als bei Listen, du läufst letztendlich durch die Liste der Schlüssel und holst darüber den zugehörigen Wert aus dem Dictionary
encoding utf-8
kfz = {
'W':'Wuppertal',
'HH':'Hamburg',
'D':'Düsseldorf',
'DO':'Dortmund',
'H':'Hannover',
'M':'München'}
for key in kfz:
print(f' Kennzeichen {key} -> Stadt {kfz[key]}')
Die Schleife lässt sich auch verkürzt schreiben.
for key, stadt in kfz.items():
print(f' Kennzeichen {key} -> Stadt {stadt}')
Du kannst dir die Listen mit den Werten bzw. den Schlüsseln auch einzeln zurückgeben lassen. Die items()
enthalten dann die Schlüssel-/Werte-Paare
items = kfz.items())
keys = kfz.keys())
Element entfernen
Um ein Element aus dem Dictionary zu entfernen, gehst du genauso vor wie bei einer Liste
del kfz['D']
Element aktualisieren
Du kannst einem Schlüssel auch einen neuen Wert zuweisen.
kfz['DO'] = 'Theremouth'
Das war es dann auch schon mit den Python Container Datenstrukturen. Im nächsten Teil wird’s mit der Objektorientierung richtig spannend.