Créer une liste
[ … ] · liste vide
Les éléments entre crochets, séparés par des virgules. Une liste peut contenir des nombres, des textes, etc.
Python - ranger plusieurs valeurs dans une seule variable, puis calculer en bloc avec NumPy (Semaine 1 · Jour 4)
Une liste range plusieurs valeurs côte à côte. Chaque case a un indice qui commence à 0. On peut aussi compter à l'envers avec des indices négatifs.
L'indice 0 est la première case, l'indice -1 la dernière. len() donne la longueur ; le dernier indice valide est donc len - 1.
La liste est modifiable : on change une case, on en ajoute, on en retire, et on la parcourt avec une boucle.
[ … ] · liste vide
Les éléments entre crochets, séparés par des virgules. Une liste peut contenir des nombres, des textes, etc.
liste[indice] = valeur
On écrase la valeur à l'indice donné. La case doit déjà exister.
.append() · .insert()
append ajoute à la fin ; insert glisse une valeur à une position et décale le reste.
.remove() · .pop() · del
remove cherche une valeur ; pop et del visent un indice (sans argument, pop prend le dernier).
for élément in liste
La variable prend chaque élément directement, sans toucher aux indices. Le cas le plus courant.
for i in range(len(liste))
Quand on a besoin du numéro de case en plus de la valeur (pour la modifier, par exemple).
Avec liste[début:fin] on extrait une sous-liste. Comme pour range, la borne de fin est exclue.
| On écrit | Sur [10, 20, 30, 40, 50] | On obtient |
|---|---|---|
| liste[1:3] | de l'indice 1 jusqu'avant 3 | [20, 30] |
| liste[:2] | du début jusqu'avant 2 | [10, 20] |
| liste[2:] | de l'indice 2 jusqu'à la fin | [30, 40, 50] |
| liste[-2:] | les deux dernières | [40, 50] |
| liste[::2] | une case sur deux (pas de 2) | [10, 30, 50] |
Sans premier nombre, on part du début ; sans second, on va jusqu'à la fin. Le découpage crée une nouvelle liste, l'originale ne bouge pas.
Quelques fonctions et méthodes qui reviennent tout le temps. sum, min, max ne marchent que sur des listes de nombres.
| On écrit | Effet | Exemple → résultat |
|---|---|---|
| len(liste) | nombre d'éléments | len([5, 8, 2]) → 3 |
| valeur in liste | teste la présence (True / False) | 8 in [5, 8, 2] → True |
| valeur not in liste | teste l'absence (True / False) | 3 not in [5, 8, 2] → True |
| liste.count(x) | compte les occurrences de x | [2, 2, 5].count(2) → 2 |
| liste.index(x) | indice de la 1re occurrence | [5, 8, 2].index(8) → 1 |
| liste.sort() | trie sur place (modifie la liste) | [3,1,2] → [1, 2, 3] |
| liste.reverse() | inverse l'ordre sur place | [1,2,3] → [3, 2, 1] |
| sorted(liste) | renvoie une copie triée (originale intacte) | sorted([3,1,2]) → [1, 2, 3] |
| sorted(liste, reverse=True) | copie triée en ordre décroissant | sorted([3,1,2], reverse=True) → [3, 2, 1] |
| sum(liste) | additionne tous les éléments | sum([5, 8, 2]) → 15 |
| max(liste) | le plus grand élément | max([5, 8, 2]) → 8 |
| min(liste) | le plus petit élément | min([5, 8, 2]) → 2 |
À distinguer : sort() modifie la liste et ne renvoie rien ; sorted() renvoie une nouvelle liste et laisse l'originale tranquille.
Une liste range les valeurs ; un tableau NumPy (array) sait calculer dessus en bloc, sans boucle, et bien plus vite. On l'utilise dès qu'on fait des maths sur beaucoup de nombres. On l'importe d'abord : import numpy as np.
np.array([ … ])
On part d'une liste Python et on la transforme en tableau. À l'affichage, pas de virgules entre les valeurs : c'est le signe d'un tableau NumPy.
np.zeros · np.ones · np.arange · np.linspace
arange = comme range (fin exclue). linspace(a, b, n) = n valeurs régulières de a à b, bornes incluses. Parfait pour un axe de graphique.
tableau[indice] · tableau[début:fin]
Indices, tranches et len fonctionnent exactement comme sur une liste. Rien de nouveau à apprendre de ce côté.
La grande force de NumPy : une opération s'applique à chaque élément en même temps (on dit « vectorisé »). Là où une liste demanderait une boucle, le tableau fait tout d'un coup.
tableau + nombre · tableau * nombre
Le calcul touche chaque case. Avec une liste, notes + 5 serait une erreur : ça, c'est le pouvoir du tableau.
tableau1 + tableau2 (même taille)
Case par case : 10×2, 20×1, 30×4. Les deux tableaux doivent avoir la même longueur.
.sum() · .mean() · .std() · np.median()
mean (moyenne) et std (écart-type) n'existent pas sur une liste Python : c'est tout l'intérêt de NumPy. Attention : la médiane n'est pas une méthode (notes.median() n'existe pas), c'est la fonction np.median(notes).
tableau[ condition ]
La condition donne un tableau de True/False, puis on le met entre crochets pour ne garder que les cases vraies. Très pratique pour trier des données.
np.sort(tableau) · tableau.sort()
np.sort(tableau) renvoie une copie triée ; tableau.sort() modifie le tableau et ne renvoie rien (comme pour une liste). Pas de reverse=True : on inverse avec [::-1].
Cinq erreurs qui reviennent tout le temps avec les listes et les tableaux.
La première case est [0]. Pour 3 éléments, les indices valides sont 0, 1, 2.
Le dernier indice valide est len(liste) - 1. Au-delà, c'est une erreur. Utilise [-1] pour la dernière.
sort() change la liste directement. Pour récupérer une copie triée, utilise sorted(notes).
Affecter une liste ne la duplique pas : les deux noms pointent la même. Pour une copie réelle, a.copy() ou a[:].
Le calcul en bloc n'existe que sur un tableau NumPy. Sur une liste, + demande une autre liste (et la colle au bout au lieu d'additionner).