======= Listen ====== Listen gehören in Python zu den zusammengesetzten Datentypen. Eine Liste kann man sich als einen Behälter für mehrere Werte vorstellen. Diese Werte können unterschiedliche Datentypen haben Sie können sogar selbst wieder Listen sein. Listen erkennt man in Python durch eckige Klammern. In den Klammern werden die Werte durch ein Komma getrennt. Beispiele: [1,23,7,4] ["Hallo",4,34.2,[1,2,3]] In der ersten Liste sind nur ganze Zahlen als Werte enthalten. In der zweiten Liste stehen Werte unterschiedlicher Datentypen, wobei der letzte Wert [1,2,3] selbst eine Liste ist. ===== Definition einer Listen ===== Eine Liste kann man einfach durch den Zuweisungsoperator ''%%=%%'' anlegen: **Beispiele:** liste1 = [1,23,7,4] liste2=["Glauchau","Meerane","Waldenburg", "Mülsen", "Thurm"] liste3=[[1,2,3],[4,5,6],[7,8,9]] liste4=[] #leere Liste Auch das Anlegen einer leeren Liste kann sinnvoll sein, wenn man durch Anhängen von weiteren Listenelementen eine Liste aufbauen will. (Siehe unten!) ===== Zugriff auf die Listenelemente ===== Wir betrachten die Liste liste1=[1,23,21,23,12] Die gesamte Liste lässt sich mit Hilfe der **print**-Anweisung ausgeben: >>> print(liste1) [1, 23, 21, 23, 12] Auf einzelne Listenelemente kann man durch Angabe der Nummer (den **Index**) des Listenelements zugreifen. Die Nummer steht dabei nach dem Listennamen in eckigen Klammern. Die Zählung beginnt bei 0. >>> print(liste1[2]) 21 ==== Teilbereiche ==== Auf Teilbereiche(-listen) von Listen kann man mit Hilfe sogenannter Slices zugreifen. ein Slice wird in der Form **[n:m]** nach dem Listenname angegeben. Er gibt ein Objekt vom Datentyp Liste zurück. Wenn man n weglässt ([:m]), wird der Wert 0 für n angenommen, wenn man m weglässt, wird der Index des letzten Listenelements für m angenommen. **Beispiele:** >>> liste = [2, 5, 7, 3, 11, 15] >>> print(liste[1:4]) [5, 7, 3] >>> print(liste[:4]) [2, 5, 7, 3] >>> print(liste[1:]) [5, 7, 3, 11, 15] >>> print(liste[:]) [2, 5, 7, 3, 11, 15] >>> print(liste[3:3]) [] ==== Zugriff auf die Listenelemente bei mehrdimensionalen Listen ==== Mehrdimensionale Listen sind Listen, die als Elemente wieder Listen enthalten. Auf die Elemente dieser Listen kann man zugreifen, indem man die Indizes der äußeren und der inneren Liste einfach an den Listennamen anhängt. Bei liste[i][j] wäre i der Index der äußeren Liste und j der Index der inneren Liste. An Stelle der Indizes in eckigen Klammern können auch Slices stehen. **Beispiele:** Definierte Liste: liste=[[1,2,3],[4,5,6],[7,8,9]] Zugriff auf die Elemente: >>> print(liste[1]) [4, 5, 6] >>> print(liste[1][2]) 6 >>> print(liste[2][1:3]) [8, 9] ===== Weitere Listenfunktionen ===== Wir betrachten die Liste liste=[1,23,21,23,12] Um den Wert eines Listenelements zu ändern benutzt man den Zuweisungsoperator ''%%=%%'': >>> liste1[1]=555 >>> print(liste1) [1, 555, 21, 23, 12] Mit der Funktion ''%%append%%'' kann man Elemente an eine Liste anhängen. >>> liste1.append(555) >>> print(liste1) [1, 23, 21, 23, 12, 555] Mit der Funktion ''%%del%%'' kann man Elemente oder Teilbereiche von Listen löschen. >>> del liste1[1:3] >>> print(liste1) [1, 23, 12] ===== Verwendung der for-Anweisung auf Listen ===== Die **for**-Anweisung lässt sich auch direkt auf Listen anwenden. So hat die Anweisung for i in range(5): dieselbe Wirkung wie for i in [0, 1, 2, 3, 4]: i nimmt der Reihe nach jeden Wert der Liste an. Auf diese Weise lassen sich auch Schleifen konstruieren, bei denen die Schleifenvariablen auch andere Werte als ganze Zahlen annehmen können. In der Schleife for wert in ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]: nimmt die Variable wert bei jeden Durchlauf der Reihe nach jeden Wochentag einmal als Wert an. ===== Erklärvideo zur Seite ===== {{youtube>Qmfvosd-k2U}} ===== Vertiefung ===== Im Lehrbuch inf-Schule wird das Thema nochmal vertieft: * https://www.inf-schule.de/programmierung/imperativeprogrammierung/konzepteimp/listen ===== Aufgaben ===== **Aufgabe 1** Welche Ausgabe erfolgt jeweils bei den einzelnen **print**-Anweisungen? Überprüfe jeweils in einer Pythonshell! >>> liste = [2, 7, 15, 28, 45, 12, 17, 33] >>> print(liste) [2, 7, 15, 28, 45, 12, 17, 33] >>> print(liste[5]) >>> print(liste[3:7]) >>> print(liste[:5]) >>> print(liste[3:]) **Aufgabe 2** Welche Ausgabe erfolgt jeweils bei den einzelnen **print**-Anweisungen? Überprüfe jeweils in einer Pythonshell! >>> liste=[[2,1,4,5],[3,2,1,8]] >>> print(liste[1]) [3, 2, 1, 8] >>> print(liste[0][3]) >>> print(liste[1][:2]) **Aufgabe 3** Welche Ausgabe erfolgt jeweils bei den einzelnen **print**-Anweisungen? Beachte, dass sich die Liste nach bestimmten Anweisungen ändert. Überprüfe jeweils in einer Pythonshell! >>> liste=[12,15,21,13,17,9,6,14] >>> liste[4]=88 >>> print(liste) >>> liste.append(16) >>> print(liste) >>> del(liste[3]) >>> print(liste) >>> del(liste[5:]) >>> print(liste) \\ [[python:loesungen:zaehlschleifen:listen| >> Lösungen]] \\ ~~DISCUSSION | Hier können Fragen zum Inhalt der Seite gestellt werden. ~~