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)
1
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
1
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)
1
2
3
Zeile 2
«Für jeden Monat in der Liste Monate»
monat ist 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 monat natürlich immer ändert

Aufgabe «Notendurchschnitt»

Berechne den Notendurchschnitt mit der gegebenen Vorlage:

noten = [4.5, 5.5, 6, 4.75]
1

Zusatzaufgabe «Durchschnitt allgemein»

Schreibe ein Unterprogramm durchschnitt(), das als Argument eine Liste erhält, den Durchschnitt dieser berechnet und das Ergebnis zurückliefert.

# Elemente hinzufügen

Mit der Methode append() kann der Liste ein Element hinzugefügt werden

wochentage = ["Mo", "Di", "Mi"]
wochentage.append("Do")
1
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))
1
2
3
4
5
6

# Elemente entfernen

Mit der Methode remove() kann ein Element von der Liste entfernt werden

wochentage = ["Mo", "Di", "Mi"]
wochentage.remove("Mi")
1
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")
1
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:

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))
1
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))
1
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)
1
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)
1
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?

Lösung «Textanalyse 2»
def textanalyse(text):
    alphabet = list("abcefghijklmnopqrstuvwxyzäöü")
    haeufigkeit = [0]*len(alphabet)
    for zeichen in text:
        zeichen_klein = zeichen.lower()
        if zeichen_klein.isalpha() and zeichen_klein in alphabet:
            index = alphabet.index(zeichen_klein)
            haeufigkeit[index] = haeufigkeit[index] + 1
    return haeufigkeit

resultat = textanalyse("the quick brown fox jumps over the lazy dog")
print(resultat)
1
2
3
4
5
6
7
8
9
10
11
12

Eine schönere Lösung dieser Aufgabe findest du im Kapitel «Dicitionaries».

Letzte Änderung: 15.12.2020, 16:00:41