Zum Hauptinhalt springen
Version: Material

3. Listen

Zum Speichern von mehreren Werten unter einem einzigen Namen verwendet man beim Programmieren Listen oder Arrays. Man kann sich Listen als Tabellen mit einer Spalte vorstellen. Die Zellen in der Tabelle werden als Elemente bezeichnet und sind durchnummeriert. So kann man einzelne in der Liste gespeichert Werte unterscheiden. Die Nummer eines Elements wird als dessen Index bezeichnet.

Wichtig
  • Das erste Element in der Liste trägt den Index 0.
  • Der Index des letzten Elementes ist somit die Länge der Liste minus 1.

Die folgende Auflistung illustriert dies für eine Liste mit 4 Noten. Die Länge der Liste ist 4, das letzte Element trägt den Index 3.

Index
Wert
0
4.5
1
5
2
3.5
3
5.5

In Python kann man diese Liste mit eckigen Klammern [ ] wie folgt erzeugen:

noten = [4.5, 5, 3.5, 5.5]
print('Die vierte Note war eine', noten[3])

Im Beispiel wird die vierte Note mit dem Index 3 ausgegeben.

Python Listen: Befehle​

Liste erzeugen​

# Liste erzeugen und Variablen zuweisen
noten = [3.5, 6, 5, 4.5]

# Ganze Liste anzeigen
print(noten)
# Element mit Index 2 aus der Liste anzeigen
print(noten[2])

Leere Liste []​

# Leere Liste erstellen
noten = []
print(noten)

Liste mit Text​

# Liste mit Strings
noten =['gut', 'erfĂĽllt', 'mangelhaft', 'erfĂĽllt']
print(noten)

Länge einer Liste: len(<liste>)​

noten = [4.5, 5, 3.5, 5.5]

print(len(noten))

Schleife über alle Elemente der Liste​

Anstatt mit range() einen Schleifeniterator zu erzeugen, kann auch direkt eine explizite Liste angegeben werden. Die Laufvariable nimmt dabei nacheinander die Werte der Liste an.

noten = [3.5, 6, 5, 4.5]

for note in noten:
print(note)
Laufvariable

Die Laufvariable note nimmt in jedem Schleifendurchlauf den Wert des nächsten Elements der Liste noten an.

Schleife über Listen-Indices​

noten = [3.5, 6, 5, 4.5]

länge = len(noten) # Länge der Liste ermitteln

for index in range(länge):
print(index, ":", noten[index])
range(länge)

Bisher war es teilweise eher mĂĽhsam, dass mit bspw. range(5) die Laufvariable die Zahlen 0, 1, 2, 3, 4 annimmt. Mit Listen ist dies nun aber sehr praktisch, da es gerade genau dem Indexbereich der Liste entspricht.

Elemente abfragen​

Erstes Element: <liste>[0]​

noten = [4.5, 5, 3.5, 5.5]
if len(noten) > 0:
print(noten[0])

Bemerken Sie: es wird zuerst überprüft, ob die Liste überhaupt ein Element enthält. Nur dann wird dieses Element abgerufen und ausgegeben.

Letztes Element <liste>[-1]​

noten = [4.5, 5, 3.5, 5.5]
if len(noten) > 0:
print(noten[-1])
# oder gleichbedeutend
print(noten[len(noten) - 1])

Fehler: IndexError​

Fragt man einen Index ab, den es nicht gibt (weil es zu wenige Elemente in der Liste hat), so entsteht ein IndexError.

Beispiel:

noten = [3.5, 6, 5, 4.5]

# Eine Liste mit 4 Elementen: Grösster Index ist 3
noten[4] = 6

Elemente Verändern​

Zuordnung: <liste>[index] = <wert>​

Ein Element in der Liste kann durch eine Zuordnung verändert werden. Im untenstehenden Beispiel werden alle ungenügenden Noten auf eine 5 gesetzt.

noten = [4.5, 5, 3.5, 5.5]
for i in range(len(noten)):
if noten[i] < 4:
noten[i] = 5
print(noten)

Elemente Hinzufügen/Entfernen​

hinzufügen: <liste>.append(<wert>)​

append fĂĽgt ein neues Element am Ende der Liste hinzu.

noten = [4.5, 5, 3.5, 5.5]
print('UrsprĂĽnglich', noten)
noten.append(6)
print('Neu', noten)

An beliebiger Stelle einfĂĽgen: <liste>.insert(<index>, <wert>)

noten = [4.5, 5, 3.5, 5.5]
print('UrsprĂĽnglich', noten)
noten.insert(1, 6) # Bei Index 1 (2. Stelle) wird eine 6 eingefĂĽgt
print('Neu', noten)

entfernen: <liste>.pop(<index>)​

Entfernt das Element an der Stelle index und gibt dieses zurĂĽck:

noten = [4.5, 5, 3.5, 5.5]
entfernt = noten.pop(2)
print('Entfernt', entfernt)
print('Noten', noten)

Aufsteigend sortieren <liste>.sort()​

noten = [3.5, 6, 5, 4, 4.5, 5]

noten.sort()
print(noten)

Listen Untersuchen​

Maximum: max(<liste>)​

Gibt das maximale Element einer numerischen Liste zurĂĽck

noten = [4.5, 5, 3.5, 5.5]
print('Beste Noten', max(noten))

Minimum: min(<liste>)​

Gibt das minimale Element einer numerischen Liste zurĂĽck

noten = [4.5, 5, 3.5, 5.5]
print('Schlechteste Noten', min(noten))

Wert in einer Liste? <wert> in <liste>​

ĂśberprĂĽft, ob sich ein Wert in einer Liste befindet

noten = [4.5, 5, 3.5, 5.5]
if 6 in noten:
print('GlĂĽckwunsch, du hast min. einmal eine 6 geschrieben')
else:
print('Du hast noch keine 6 geschrieben')

Anzahl Elemente mit einem Wert? <liste>.count(<wert>)​

Zählt, wie oft sich ein Wert in einer Liste befindet.

noten = [4.5, 5, 3.5, 5.5, 5]
for i in [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]:
if noten.count(i) > 0:
print(f'Anzahl {i}: {noten.count(i)}')