Lijsten
Een lijst van 5 items heeft indices 0 tot 4, dus menu[4] is het laatste item en menu[5] stopt het programma met IndexError.
Eén variabele kan een heel menu bevatten
Een schoollunchmenu bevat meerdere gerechten en een boodschappenlijst meerdere artikelen. Je kunt één variabele per gerecht maken, dish1, dish2, dish3, maar dat werkt niet meer zodra het menu groeit. Een lijst bewaart elk aantal waarden op volgorde in één variabele. Schrijf de waarden tussen vierkante haken, gescheiden door komma's.
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 milkLijsten gebruiken dezelfde indices als strings: 0 voor het eerste item, -1 voor het laatste en slices zoals menu[1:3]. len() geeft het aantal items. Als je een hele lijst afdrukt, toont Python de haken en elke string tussen enkele aanhalingstekens, zodat je exact ziet waar elk item begint en eindigt.
Anders dan strings kunnen lijsten veranderen
Een string kun je niet ter plekke bewerken, een lijst wel. Ken aan een index toe om een item te vervangen. append() voegt achteraan toe, remove() verwijdert de eerste passende waarde en pop() haalt het laatste item weg en geeft het terug. Het sleutelwoord in controleert of een waarde in de lijst staat. Deze methoden veranderen de lijst zelf, het grote verschil met stringmethoden.
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| Na deze regel | 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 is 'tofu') |
Getallenlijsten hebben kant-en-klare hulpmiddelen
Voor een getallenlijst doen sum(), min() en max() wat hun namen zeggen. sorted() geeft een nieuwe geordende lijst en laat het origineel intact, terwijl sort() de lijst zelf herschikt en niets teruggeeft. Het gemiddelde is de som gedeeld door het aantal, een mooie toepassing van 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]Twee namen kunnen naar dezelfde lijst wijzen
Hier gaat bijna iedereen de mist in. Na b = a zijn er geen twee lijsten. Er is één lijst met twee namen. Verander haar via b en a ziet dat ook, want a en b zijn dezelfde lijst. Bij getallen en strings merk je dit nooit omdat die niet ter plekke kunnen veranderen. Bij lijsten wel. Wil je een aparte kopie, vraag er dan een met a.copy() of de slice a[:].
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']Lijsten en lussen horen samen. Een lijst van 30 toetsscores is pas bruikbaar als een programma ze allemaal kan bezoeken zonder 30 losse regels te schrijven. Dat doet de for-lus uit het hoofdstuk over lussen. Tot dan bezoeken sum(), min(), max() en len() ze voor je, elk met één aanroep.
| lijst | Waarden op volgorde tussen [ ], gescheiden door komma's |
| append(x) | Voegt x achteraan de lijst toe |
| remove(x) | Verwijdert het eerste item gelijk aan x |
| pop() | Haalt het laatste item weg en geeft het terug |
| sorted(list) | Nieuwe gesorteerde lijst; het origineel blijft ongewijzigd |
| list.sort() | Sorteert de lijst zelf en geeft None terug |
| a.copy() | Een aparte kopie van lijst a |
- Wat drukt deze code af?
nums = [10, 20, 30, 40] print(nums[2]) - Wat drukt deze code af?
nums = [10, 20, 30, 40] print(nums[-1] + nums[0]) - Wat drukt deze code af?
bag = ["pen"] bag.append("ruler") bag.append("eraser") print(len(bag)) - Wat drukt deze code af?
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
- Wat drukt deze code af?
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] NoneEen fout
- Wat drukt deze code af?
a = [1, 2] b = a b.append(3) print(a)[1, 2][1, 2, 3][3]Een fout
- Wat drukt deze code af?
marks = [70, 90, 80] print(sum(marks) / len(marks)) - Wat drukt deze code af?
stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"] print(stations[1:3]) - Wat drukt deze code af?
stack = ["a", "b", "c"] top = stack.pop() print(top, len(stack)) - Wat drukt deze code af?
print("milk" in ["eggs", "milk", "tofu"]) - Zet de regels op volgorde zodat het programma de lijst hieronder afdrukt.Uitvoer
['homework', 'piano']
- ‘Het laatste item is menu[len(menu)].’ Bij 5 items stoppen indices bij 4, dus menu[5] stopt met IndexError: list index out of range. Gebruik menu[-1] of menu[len(menu) - 1].
- ‘menu = menu.append(x) bewaart de nieuwe lijst.’ append() verandert de lijst en geeft None terug, dus deze regel vervangt de hele lijst door None. Schrijf menu.append(x) op een eigen regel.
- ‘b = a geeft een reservekopie van de lijst.’ Het geeft dezelfde lijst een tweede naam. Veranderingen via beide namen zie je in beide. Gebruik b = a.copy() voor een echte kopie.
- Een lijst bevat waarden op volgorde: [a, b, c].
- Indices en slices werken als bij strings; de laatste index is len - 1.
- append, remove, pop en indextoekenning veranderen de lijst zelf.
- sorted() geeft een nieuwe lijst; sort() verandert de lijst en geeft None.
- b = a deelt één lijst; gebruik a.copy() voor een aparte.
Bronnen van deze cursus (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)
Geraadpleegd: 2026-10-19