Eine Liste ist ein sogenannter «zusammengesetzter» Datentyp. Sie besteht nämlich aus mehreren einfachen oder zusammengesetzten Datentypen. Es gibt Listen von Zahlen, von Strings. Es sind auch gemischte Listen und Listen von Listen möglich.
liste = [True, "Hallo Welt", "Hello World", 12, 3.1]
for item in liste:
    print(item)
 2
3
4
# Liste definieren
Python erkennt Listen an Hand der eckigen Klammern. Vorgegebene Werte werden duch Kommas getrennt. Die Liste kann aber auch leer sein.
wochentage = ["Mo", "Di", "Mi"]  # Liste mit 3 Elementen
monate = ["Januar"]              # Liste mit einem Elemente
jahre = []                       # leere Liste
 2
3
# Länge der Liste
Mit len(list) erhält man die Anzahl Elemente der Liste list.
# for-in-Schleife
Mit der for-in-Schleife können wir alle Elemente einer List durchlaufen.
monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul"]
for monat in monate:
    print(monat)
2
3
- Zeile 2
 - «Für jeden Monat in der Liste Monate»
 monatist der Name, mit welchem wir das Element in der Schleife ansprechen können- Zeile 3
 - wird für jedes Element ausgeführt, wobei der Wert von 
monatnatürlich immer ändert 
Aufgabe «Notendurchschnitt»
Berechne den Notendurchschnitt mit der gegebenen Vorlage:
noten = [4.5, 5.5, 6, 4.75]
 «Notendurchschnitt»
noten = [4.5, 5.5, 6, 4.75]
summe = 0
for note in noten:
    summe = summe + note
durchschnitt = summe/len(noten)
 2
3
4
5
6
Zusatzaufgabe «Durchschnitt allgemein»
Schreibe ein Unterprogramm durchschnitt(), das als Argument eine Liste erhält, den Durchschnitt dieser berechnet und das Ergebnis zurückliefert.
Durchschnitt allgemein
def durchschnitt(liste):
    summe = 0
    for element in liste:
        summe = summe + element
    return(summe/len(noten))
noten = [4.5, 5.5, 6, 4.75]
print("Zeugnis:", durchschnitt(noten))
print("Würfel:", durchschnitt([1,5,2,6]))
 2
3
4
5
6
7
8
9
10
# Elemente hinzufügen
Mit der Methode append() kann der Liste ein Element hinzugefügt werden
wochentage = ["Mo", "Di", "Mi"]
wochentage.append("Do")
 2
«Fibonacci-Folge als Liste»
Wir erstellen nochmals eine Fibonacci-Folge (die ersten 100 Elemente). Diese soll aber als Liste komplett gespeichert und erst am Schluss ausgegeben werden:
fibonacci = [0,1]
# fibonacci-folge berechnen
print(fibonacci)
print(len(fibonacci))
 2
3
4
5
6
«Fibonacci-Folge als Liste»
fibonacci = [0,1]
i = 2
while i < 100:
    next_item = fibonacci[i-2] + fibonacci[i-1]
    fibonacci.append(next_item)
    i = i + 1
print(fibonacci)
print(len(fibonacci))
 2
3
4
5
6
7
8
9
10
Dank der negativen Indizes kann auf die Zählvariable verichtet werden:
fibonacci = [0,1]
while len(fibonacci) < 100:
    next_item = fibonacci[-2] + fibonacci[-1]
    fibonacci.append(next_item)
    
print(fibonacci)
print(len(fibonacci))
 2
3
4
5
6
7
8
# Elemente entfernen
Mit der Methode remove() kann ein Element von der Liste entfernt werden
wochentage = ["Mo", "Di", "Mi"]
wochentage.remove("Mi")
 2
# Überprüfen ob in Liste
Mit in und not in lässt sich überprüfen, ob ein Wert in einer Liste vorkommt oder eben nicht:
wochentage = ["Mo", "Di", "Mi"]
if "Mo" in wochentage:
    print("Der Montag ist ein Wochentag")
if "Do" not in wochentage:
    print("Der Donnerstag ist kein Wochentag")
2
3
4
5
Aufgabe «Textanalyse»
Wir versuchen einen Text zu analysieren. Dazu berechnen wir die Anzahl verschiedener Buchstaben die darin vorkommen.
Programmiere so ein Analyse-Unterprogramm:
- als Argument erhält es einen Text (kann eingegeben werden)
 - als Rückgabewert wird eine Liste der einzelnen Buchstabe zurückgeliefert
 - Siehe auch den folgenden Tipp «String als Liste»
 
Mögliche Erweiterungen:
- ignoriere Gross-/Kleinschreibung. Verwende dazu die Methode 
lower()oderupper() - beschränke dich auf Buchstaben. Verwende dazu die String-Methode 
isalpha()(opens new window) - Sortiere die Liste alphabetisch, bevor du sie im Unterprogramm. Verwende dazu das Unterprogramm 
sorted()(opens new window) 
Lösung «Textanalyse»
ohne Erweiterungen:
def textanalyse(text):
    buchstaben = []
    for zeichen in text:
        if zeichen not in buchstaben:
            buchstaben.append(zeichen)
    return buchstaben
resultat = textanalyse("The quick brown fox jumps over the lazy dog")
print(resultat)
print(len(resultat))
 2
3
4
5
6
7
8
9
10
mit den Erweiterungen:
def textanalyse(text):
    buchstaben = []
    for zeichen in text:
        zeichen_klein = zeichen.lower()
        if zeichen_klein.isalpha() and zeichen_klein not in buchstaben:
            buchstaben.append(zeichen_klein)
    return sorted(buchstaben)
resultat = textanalyse("The quick brown fox jumps over the lazy dog")
print(resultat)
print(len(resultat))
 2
3
4
5
6
7
8
9
10
11
Tipp: «String als Liste»
Strings können in Python als eine Art Liste (Liste von Zeichen) angeschaut werden. So kann z.B. die Länge eines Strings mit len berechnet werden. Auch die for in-Schleife funktioniert mit Strings:
text = "Hallo Welt"
for zeichen in text:
    print(zeichen)
 2
3
4
# Auf einzelne Elemente zugreifen
Möchte man auf einzelne Elemente der Liste zugreifen, so schreibt man den Namen der Liste und hängt in eckiger Klammer den Index (sozusagen die Position) des gewünschten Elementes an.
wochentage = ["Mo", "Di", "Mi"]
erster_wochentag = wochentage[0]
wochentage[2] = "Mittwoch"
letzter_wochentag = wochentage[-1]
print("Die Woche beginnt am", erster_wochentag)
print("und endet am", letzter_wochentag)
 2
3
4
5
6
Hinweis
- Das erste Element hat den Index 0!
 - Mit negativen Werten wird die Position von hinten angegeben
 
Zusatzaufgabe «Textanalyse 2»
Spannend wäre ja nicht nur zu wissen, welche Buchstaben in einem Text vorkommen, sondern auch ihre Häufigkeit. Wie könnte man dies erreichen?
# Teillisten
Mit der eckigen Klammer kann auch eine Teilliste extrahiert werden. Dabei geben wir zwei Indizes an, die durch einen Doppelpunkt getrennt sind. Man kann einen der beiden Indizes auch weglassen. Dann beginnt die Liste beim ersten Element, resp. sie endet beim Letzten. Die Indizes können auch negativ sein.
monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul"]
fruehling = monate[2:5]
jahresbeginn = monate[0:2]
jahresende = monate[-2:]
 2
3
4
# weitere Aufgaben
Aufgabe «Taschenrechner»
Schreibe ein Programm, das Eingaben wie z.B. 12 + 12, oder 3 * 4 - 5 verarbeiten und auswerten kann. Einige Tipps:
- Mit 
str.split()kann man einen Stringstrbei den Leerschlägen zerschneiden und die Stücke in eine Liste packen - mit 
str.isdigit()kann erkannt werden, ob der Stringstreine Zahl darstellt oder nicht - mit 
float(str)oderint(str)kann der Stringstrin eine Zahl umgewandelt werden (kann einen Error geben!) 
Zusatzaufgabe «Taschenrechner 2»
Versuche den Taschenrechner schrittweise zu erweitern:
- Punkt-vor-Strich-Regel wird befolgt
 - Leerschläge können weggelassen werden
 - geklammerte Ausdrücke werden zuerst berechnetf
 
← Rückblick Dictionary →