Les listes Python⚓︎
Définition
Les listes Python servent à stocker plusieurs données ensemble. Contrairement aux types simples comme les nombres ou les booléens qui ne permettent que d'associer une seule valeur à une variable, les types construits peuvent contenir plusieurs valeurs. Il existe d'autres types construits (dictionnaires, tableaux, arbres, files, piles, graphes...) qui seront vus cette année et en terminale.
Les listes sont un peu le couteau suisse de Python. Elles servent à faire beaucoup de choses. Bien plus qu'on appelle généralement liste dans d'autres langages ou en informatique en général.
Pour l'instant nous allons utiliser principalement la possibilité de rajouter des éléments à une liste et de parcourir les valeurs déjà ajoutées.
Les listes peuvent contenir n'importe quel autre type de données, y compris des listes, mais nous y reviendrons plus tard dans l'année. Parce que c'est souvent plus pratique, nous utiliserons des listes d'entiers, mais il ne faut pas imaginer que les listes se limitent à cela.
Création de listes
Les listes Python sont notées avec des crochets ([
et ]
) et les valeurs sont séparées par des virgules. Par exemple [3, 5, -5, 1]
.
La liste vide se note juste []
.
Pour ajouter un élément à une liste, il faut écrire LA_LISTE.append(LA_VALEUR)
.
>>> exemple = [4, 1, 9]
>>> exemple.append(7)
>>> exemple.append(10)
>>> exemple
[4, 1, 9, 7, 10]
Comme les textes, on peut également concaténer des listes entre elles :
>>> debut = [5, 1, -9]
>>> fin = [43, -9, 0, 15]
>>> debut + fin
[5, 1, -9, 43, -9, 0, 15]
Avec la concaténation, on obtient une nouvelle liste. Alors qu'avec append
, on modifie la liste.
Pour faire plusieurs ajouts en une fois
Si on veut ajouter plusieurs valeurs à une liste sans faire plusieurs append
, on peut utiliser extend
.
>>> debut = [4, 9, 7]
>>> fin = [3, -1]
>>> debut.extend(fin)
>>> debut
[4, 9, 7, 3, -1]
Nous utiliserons peu cette méthode, mais pour certains projets, cela peut aider.
Pour connaître la longueur d'une liste, il faut utiliser la fonction len
, comme pour les textes.
>>> len([])
0
>>> len([2, 1, 7, 9])
4
>>> une_liste = [4, 6, -2]
>>> une_liste.append(7)
>>> une_liste.append(15)
>>> len(une_liste)
5
Accéder aux valeurs des éléments
Chaque élément d'une liste est associé à un indice, comme pour les symboles dans un texte. Le premier élément a l'indice 0, le deuxième a l'indice 1 et ainsi de suite.
>>> liste_valeurs = [9, 10, -1, -45, 7]
>>> liste_valeurs[0]
9
>>> liste_valeurs[1]
10
>>> liste_valeurs[4]
7
Tout comme les textes, on peut utiliser des indices négatifs pour aller de droite à gauche. Le dernier élément a l'indice -1, l'avant-dernier -2 et ainsi de suite.
valeurs | indices | indices négatifs |
---|---|---|
9 | 0 | -5 |
10 | 1 | -4 |
-1 | 2 | -3 |
-45 | 3 | -2 |
7 | 4 | -1 |
De façon général le dernier élément d'une liste a toujours pour indice len(liste)-1
et le premier a toujours comme indice négatif -len(liste)
.
Exercice 1 (exercice 1 de la feuille)
-
On considère la liste
valeurs = [2, 6, 14, 8, 0, -3]
.Déterminer les valeurs des expressions suivantes :
valeurs[1]
valeurs[5]
valeurs[valeurs[0]]
Vous pouvez utiliser le terminal ci-dessous pour tester vos réponses.
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer) -
On considère les instructions suivantes :
>>> liste1 = [3, 6, 1] >>> liste2 = [4, 5]
Déterminer les valeurs des expressions suivantes :
liste1+liste2
liste2+liste1
liste1+liste1
liste2+liste2
Vous pouvez utiliser le terminal ci-dessous pour tester vos réponses.
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer) -
Que vaut
donnees
après les instructions suivantes :>>> donnees = [-8, 3, 2] >>> donnees.append(5) >>> donnees.append(9)
Vous pouvez utiliser le terminal ci-dessous pour tester la réponse.
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Génération de listes⚓︎
Définition explicite
Nous avons déjà vu comment définir une liste en indiquant les valeurs qu'elle contient et aussi comment en ajouter.
Il est également possible de générer des listes à l'aide de formules :
>>> [0] ∗ 5
[0, 0, 0, 0, 0]
>>> [1, 2] ∗ 3
[1, 2, 1, 2, 1, 2]
On peut aussi obtenir des listes à partir de la fonction range
ou d'un texte :
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(3, 12, 2)) # on part de 3, de 2 en 2, en s'arrêtant avant 12
[3, 5, 7, 9, 11]
>>> list('bonjour')
['b', 'o', 'n', 'j', 'o', 'u', 'r']
Définition en compréhension
Il est également possible de générer des listes à l'aide de la syntaxe suivante :
[f(x) for x in ITERABLE] # f est une fonction ou un expression qui utilise, ou pas, x.
>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [x//2 for x in [3, 1, 7]]
[1, 0, 3]
On peut obtenir les mêmes listes à l'aide de boucles.
liste1 = []
for x in range(10):
liste1.append(x**2)
liste2 = []
for x in [3, 1, 7]:
liste2.append(x//2)
Pour obtenir des listes plus complexes, on peut rajouter une condition pour filtrer les valeurs :
[f(x) for x in ITERABLE if TEST] # TEST est une expression booléenne qui utilise, ou pas, x.
On peut obtenir la liste des entiers inférieurs à 50 qui sont multiples de 3 mais pas de 4 :
>>> [x for x in range(50) if x%3 == 0 and x%4 != 0]
[3, 6, 9, 15, 18, 21, 27, 30, 33, 39, 42, 45]
Il faut utliser le script suivant pour obtenir la même liste :
liste = []
for x in range(50):
if x%3 == 0 and x%4 != 0:
liste.append(x)
Exercice 2 (exercice 2 de la feuille)
Déterminer la valeur des expressions suivantes :
[i+1 for i in range(5)]
[2*i for i in range(5)]
[2*i for i in range(50) if i < 4]
[i for i in range(10) if i%3 == 0]