Listen
Eine Liste mit 5 Einträgen hat die Indizes 0 bis 4, also ist menu[4] der letzte Eintrag, und menu[5] stoppt das Programm mit IndexError.
Eine Variable kann ein ganzes Menü halten
Ein Schulmittagsmenü hat mehrere Gerichte, eine Einkaufsliste mehrere Posten. Du könntest für jedes Gericht eine Variable anlegen, dish1, dish2, dish3, doch dieser Ansatz wird unpraktisch, sobald das Menü wächst. Eine Liste hält beliebig viele Werte in einer Variablen, der Reihe nach. Schreibe die Werte in eckige Klammern, durch Kommas getrennt.
menu = ["rice", "seaweed soup", "bulgogi", "kimchi", "milk"]
print(menu)
print(len(menu))
print(menu[0], menu[-1])['rice', 'seaweed soup', 'bulgogi', 'kimchi', 'milk']
5
rice milkListen nutzen dieselben Indexnummern wie Strings: 0 für den ersten Eintrag, -1 für den letzten und Slices wie menu[1:3]. len() gibt die Zahl der Einträge an. Gibst du eine ganze Liste aus, zeigt Python die Klammern und setzt jeden String in einfache Anführungszeichen, sodass du genau siehst, wo jeder Eintrag beginnt und endet.
Anders als Strings können sich Listen ändern
Ein String lässt sich nicht an Ort und Stelle bearbeiten, eine Liste schon. Weise einem Index etwas zu, um einen Eintrag zu ersetzen. append() fügt einen Eintrag am Ende hinzu, remove() löscht den ersten passenden Wert, und pop() nimmt den letzten Eintrag heraus und gibt ihn dir zurück. Das Schlüsselwort in prüft, ob ein Wert in der Liste steht. Diese Methoden verändern die Liste selbst, der große Unterschied zu String-Methoden.
cart = ["eggs", "milk"]
cart.append("tofu")
cart[0] = "ramen"
print(cart)
cart.remove("milk")
last = cart.pop()
print(cart, last)
print("tofu" in cart)['ramen', 'milk', 'tofu']
['ramen'] tofu
False| Nach dieser Zeile | cart |
|---|---|
| cart = ["eggs", "milk"] | ['eggs', 'milk'] |
| cart.append("tofu") | ['eggs', 'milk', 'tofu'] |
| cart[0] = "ramen" | ['ramen', 'milk', 'tofu'] |
| cart.remove("milk") | ['ramen', 'tofu'] |
| last = cart.pop() | ['ramen'] (last ist 'tofu') |
Zahlenlisten bringen fertige Werkzeuge mit
Für eine Liste von Zahlen tun sum(), min() und max(), was ihre Namen sagen. sorted() gibt eine neue sortierte Liste zurück und lässt das Original in Ruhe, während die Methode sort() die Liste selbst umordnet und None zurückgibt. Der Durchschnitt ist die Summe geteilt durch die Anzahl, eine schöne Anwendung von len().
scores = [72, 95, 88, 64, 81]
print(sum(scores), min(scores), max(scores))
print(sum(scores) / len(scores))
print(sorted(scores))
print(scores)400 64 95
80.0
[64, 72, 81, 88, 95]
[72, 95, 88, 64, 81]Zwei Namen können auf dieselbe Liste zeigen
Hier ist der Teil, an dem fast alle hängen bleiben. Nach b = a gibt es nicht zwei Listen. Es gibt eine Liste mit zwei Namen. Änderst du sie über b, sieht a die Änderung auch, weil a und b dieselbe Liste sind. Bei Zahlen und Strings bemerkst du das nie, weil sie sich nicht an Ort und Stelle ändern lassen. Bei Listen schon. Willst du eine getrennte Kopie, fordere sie mit a.copy() oder dem Slice a[:] an.
a = ["rice", "soup"]
b = a
b.append("kimchi")
print(a)
c = a.copy()
c.append("egg")
print(a)
print(c)['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi', 'egg']Listen und Schleifen gehören zusammen. Eine Liste mit 30 Testergebnissen ist nur nützlich, wenn ein Programm jedes davon besuchen kann, ohne 30 einzelne Zeilen zu schreiben, und genau das tut die for-Schleife in der Einheit zu Schleifen. Bis dahin besuchen sum(), min(), max() und len() für dich alles, je ein Aufruf.
| list | Werte der Reihe nach zwischen [ ], durch Kommas getrennt |
| append(x) | Fügt x am Ende der Liste hinzu |
| remove(x) | Löscht den ersten Eintrag, der x entspricht |
| pop() | Nimmt den letzten Eintrag heraus und gibt ihn zurück |
| sorted(list) | Neue sortierte Liste; das Original bleibt unverändert |
| list.sort() | Sortiert die Liste selbst und gibt None zurück |
| a.copy() | Eine getrennte Kopie der Liste a |
- Was gibt das aus?
nums = [10, 20, 30, 40] print(nums[2]) - Was gibt das aus?
nums = [10, 20, 30, 40] print(nums[-1] + nums[0]) - Was gibt das aus?
bag = ["pen"] bag.append("ruler") bag.append("eraser") print(len(bag)) - Was gibt das aus?
x = [3, 1, 2] y = sorted(x) print(x, y)[3, 1, 2] [1, 2, 3][1, 2, 3] [1, 2, 3][1, 2, 3] [3, 1, 2][3, 1, 2] None
- Was gibt das aus?
x = [3, 1, 2] y = x.sort() print(x, y)[3, 1, 2] [1, 2, 3][1, 2, 3] [1, 2, 3][1, 2, 3] NoneEin Fehler
- Was gibt das aus?
a = [1, 2] b = a b.append(3) print(a)[1, 2][1, 2, 3][3]Ein Fehler
- Was gibt das aus?
marks = [70, 90, 80] print(sum(marks) / len(marks)) - Was gibt das aus?
stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"] print(stations[1:3]) - Was gibt das aus?
stack = ["a", "b", "c"] top = stack.pop() print(top, len(stack)) - Was gibt das aus?
print("milk" in ["eggs", "milk", "tofu"]) - Bringe die Zeilen in die richtige Reihenfolge, damit das Programm die Liste unten ausgibt.Ausgabe
['homework', 'piano']
- „Der letzte Eintrag ist menu[len(menu)].“ Bei 5 Einträgen enden die Indizes bei 4, also stoppt menu[5] mit IndexError: list index out of range. Nutze menu[-1] oder menu[len(menu) - 1].
- „menu = menu.append(x) behält die neue Liste.“ append() ändert die Liste und gibt None zurück, also ersetzt diese Zeile die ganze Liste durch None. Schreibe menu.append(x) allein.
- „b = a gibt mir eine Sicherungskopie der Liste.“ Es gibt derselben Liste einen zweiten Namen. Änderungen über einen der Namen zeigen sich in beiden. Nutze b = a.copy() für eine echte Kopie.
- Eine Liste hält Werte der Reihe nach: [a, b, c].
- Indizes und Slices funktionieren wie bei Strings; der letzte Index ist len - 1.
- append, remove, pop und Indexzuweisung verändern die Liste selbst.
- sorted() gibt eine neue Liste zurück; sort() ändert die Liste und gibt None zurück.
- Nach b = a zeigen beide Namen auf dieselbe Liste; nutze a.copy() für eine getrennte Kopie.
Quellen zu diesem Kurs (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Abgerufen: 2026-10-19