Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

3Listen

Die Liste ist die wichtigste Datenstruktur in Python. Eine Liste ist genau das, was man sich darunter vorstellt. Ein Wert, wie zum Beispiel eine Zahl, steht für sich alleine. Will man eine Reihe gleichartiger Werte speichern, benötigt man eine Liste. Auch Objekte lassen sich in einer Liste speichern. Zum Beispiel könnte man mehrere Objekte der Klasse DigitalInOut auch in einer Liste speichern.

Um eine Liste zu deklarieren, verwendet man eckige Klammern. Die einzelnen Werte/Objekte werden durch Kommata voneinander getrennt.

Im vorherigen Beispiel haben wir die Frequenzen der einzelnen Noten in einer Liste gespeichert. Sie wurde aber keiner Variablen zugewiesen. Das kann man so machen, aber es ist üblich Werte, die man später vielleicht ändern möchte, einer Variablen zuzuweisen, sodass man sie am Anfang des Programms leichter wiederfindet.

Passe den Code wie folgt an.

mein_song = [262, 294, 330, 349, 392, 440, 494, 523]

while True:
    for note in mein_song:
        simpleio.tone(board.A3, note, 0.25)
    time.sleep(1)

Wir haben der Liste den Namen mein_song gegeben. Variablennamen werden immer kleingeschrieben. Außerdem dürfen sie nicht mit einer Ziffer beginnen und kein Leerzeichen enthalten.

Die for ... in Schleife

Vielleicht hast du schon eine Ahnung, was die beiden Schlüsselworte for und in bewirken. Es handelt sich dabei um eine spezielle Schleife für Listen. Betrachte dieses minimale Beispiel:

liste = [1,2,3,4,5]

for element in liste:
    print (element)

Die Laufvariable element nimmt bei jedem Schleifendurchlauf den Wert des jeweils nächsten Elements in der Liste liste an und startet natürlich mit dem 0-ten Element.

0-tes Element? Müsste es nicht erstes Element heißen? Ja, eigentlich schon! Aber Programmierer fangen immer bei 0 an zu zählen! Das erste Element hat also den Index 0.

Wahlfreier Zugriff auf die Elemente

In Python hat man einen wahlfreien Zugriff auf jedes Element einer Liste. Wie das geht, kannst du hier sehen:

1liste = [1,2,3,14,6]
2
3print(liste[0])            # 1
4
5print(liste[1])            # 2
6
7drittes_element = liste[2]
8print(drittes_element)     # 3
9
10print(liste[3] - 10)       # 4
11
12liste[4] = 5
13print(liste[4])            # 5
14
15liste.append(6)
16print(liste[5])            # 6

In den Zeilen 3, 5, 7, 10, 13 und 16 wird lesend auf Liste zugegriffen und in Zeile 1, 12 und 15 schreibend. In Zeile 7 wird das dritte Element (Index 2) an eine Variable zugewiesen. In Zeile 10 wird eine Berechnung ausgeführt, bevor die Methode print aufgerufen. In Zeile 15 kannst du sehen, wie man einer Liste ein Element hinzufügen kann.

Listen können noch vieles mehr. Man kann Listen durchsuchen, sortieren, zerteilen, zusammenführen und vieles mehr. Hier findest du einen Überblick.

Es geht auch ohne for ... in

Ohne diese spezielle Schleife für Listen müsste man den Programmcode von oben so schreiben:

1mein_song = [262, 294, 330, 349, 392, 440, 494, 523]
2
3while True:
4    index = 0
5    while ( index < len(mein_song) ):
6        note = mein_song[index]
7        simpleio.tone(board.A3, note, 0.25)
8        index += 1
9    time.sleep(1)

Das geht natürlich auch aber sieht etwas komplizierter aus und hat vier Zeilen mehr. Gehen wir den Code Zeile für Zeile durch. In Zeile 4 weisen wir der Laufvariablen index den Startwert 0 zu. Diese Variable merkt sich also welche Note als nächstes gespielt werden soll.

Länge einer Liste

Die Länge der Liste erfährt man mit der Funktion len(). Im Beispiel ist die Länge der Liste gleich 8.

while-Schleife

In den Zeilen 5 bis 8 sehen wir die bekannte while-Schleife wieder. Im Schleifenkopf (Zeile 5) wird die Schleifenbedingung index < len(mein_song) geprüft. Ist der Wert von Index kleiner als die Länge der Liste? Falls ja, dann werden die drei nächsten Zeilen ausgeführt und es wird erneut die Schleifenbedingung geprüft. Solange bis die Schleifenbedingung False ist. In Zeile 6 wird das Element mit der Nummer, die in index gespeichert ist, in die Variable note gespeichert und in Zeile 8 wird der Wert in index um 1 hochgezählt.


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?