Les listes
Une liste de 5 éléments a les indices 0 à 4 : menu[4] est le dernier élément et menu[5] arrête le programme avec IndexError.
Une variable peut contenir tout un menu
Un menu de cantine scolaire a plusieurs plats, et une liste de courses plusieurs articles. Tu pourrais créer une variable par plat, dish1, dish2, dish3, mais cette approche devient peu pratique dès que le menu grandit. Une liste garde autant de valeurs que tu veux dans une seule variable, dans l'ordre. Écris les valeurs entre crochets, séparées par des virgules.
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 milkLes listes utilisent les mêmes numéros d'indice que les chaînes : 0 pour le premier élément, -1 pour le dernier, et des tranches comme menu[1:3]. len() donne le nombre d'éléments. Quand tu affiches une liste entière, Python montre les crochets et met chaque chaîne entre guillemets simples, pour que tu voies exactement où chaque élément commence et finit.
Contrairement aux chaînes, les listes peuvent changer
Une chaîne ne peut pas être modifiée sur place, mais une liste le peut. Affecte à un indice pour remplacer un élément. append() ajoute un élément à la fin, remove() supprime la première valeur correspondante, et pop() retire le dernier élément et te le rend. Le mot-clé in vérifie si une valeur est dans la liste. Ces méthodes modifient la liste elle-même, ce qui est la grande différence avec les méthodes de chaîne.
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| Après cette ligne | 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 vaut 'tofu') |
Les listes de nombres viennent avec des outils tout faits
Pour une liste de nombres, sum(), min() et max() font ce que leur nom dit. sorted() renvoie une nouvelle liste triée et laisse l'originale tranquille, alors que la méthode sort() réordonne la liste elle-même et renvoie None. La moyenne est la somme divisée par le nombre d'éléments, un bel usage de 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]Deux noms peuvent désigner la même liste
Voici le point qui piège presque tout le monde. Après b = a, il n'y a pas deux listes. Il y a une liste avec deux noms. Modifie-la via b, et a voit aussi le changement, car a et b sont la même liste. Avec les nombres et les chaînes, on ne le remarque jamais, car on ne peut pas les modifier sur place. Avec les listes, si. Si tu veux une copie séparée, demande-la avec a.copy() ou la tranche 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']Les listes et les boucles vont ensemble. Une liste de 30 notes d'interrogation n'est utile que si un programme peut les parcourir toutes sans écrire 30 lignes séparées, et c'est ce que fait la boucle for de l'unité sur les boucles. D'ici là, sum(), min(), max() et len() font le parcours pour toi, un appel chacune.
| list | Des valeurs dans l'ordre entre [ ], séparées par des virgules |
| append(x) | Ajoute x à la fin de la liste |
| remove(x) | Supprime le premier élément égal à x |
| pop() | Retire le dernier élément et le renvoie |
| sorted(list) | Nouvelle liste triée ; l'originale est inchangée |
| list.sort() | Trie la liste elle-même et renvoie None |
| a.copy() | Une copie séparée de la liste a |
- Qu'affiche ce code ?
nums = [10, 20, 30, 40] print(nums[2]) - Qu'affiche ce code ?
nums = [10, 20, 30, 40] print(nums[-1] + nums[0]) - Qu'affiche ce code ?
bag = ["pen"] bag.append("ruler") bag.append("eraser") print(len(bag)) - Qu'affiche ce code ?
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
- Qu'affiche ce code ?
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] NoneUne erreur
- Qu'affiche ce code ?
a = [1, 2] b = a b.append(3) print(a)[1, 2][1, 2, 3][3]Une erreur
- Qu'affiche ce code ?
marks = [70, 90, 80] print(sum(marks) / len(marks)) - Qu'affiche ce code ?
stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"] print(stations[1:3]) - Qu'affiche ce code ?
stack = ["a", "b", "c"] top = stack.pop() print(top, len(stack)) - Qu'affiche ce code ?
print("milk" in ["eggs", "milk", "tofu"]) - Mets les lignes dans l'ordre pour que le programme affiche la liste ci-dessous.Sortie
['homework', 'piano']
- « Le dernier élément est menu[len(menu)]. » Avec 5 éléments, les indices s'arrêtent à 4, donc menu[5] s'arrête avec IndexError: list index out of range. Utilise menu[-1] ou menu[len(menu) - 1].
- « menu = menu.append(x) garde la nouvelle liste. » append() modifie la liste et renvoie None, donc cette ligne remplace toute la liste par None. Écris menu.append(x) tout seul.
- « b = a me donne une sauvegarde de la liste. » Cela donne à la même liste un second nom. Les changements faits via l'un ou l'autre apparaissent dans les deux. Utilise b = a.copy() pour une vraie copie.
- Une liste contient des valeurs dans l'ordre : [a, b, c].
- Les indices et les tranches fonctionnent comme pour les chaînes ; le dernier indice est len - 1.
- append, remove, pop et l'affectation par indice modifient la liste elle-même.
- sorted() renvoie une nouvelle liste ; sort() modifie la liste et renvoie None.
- b = a partage une seule liste ; utilise a.copy() pour en avoir une séparée.
Sources de ce cours (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)
Consulté le: 2026-10-19