Aller au contenu

Listes Python

Les listes Python par David Latouche⚓︎

Vidéo de David Latouche (14:44)

Les listes Python par compréhension⚓︎

Vidéo de Cédric Gerland⚓︎

Vidéo de Cédric Gerland (16:40)

Site de Pascal Ortiz⚓︎

Site à consulter

Notion de liste et application aux images numériques⚓︎

Vidéo Lumni (28:30)

Les listes en Python⚓︎

Une liste (ou list / array) en Python est une variable dans laquelle on peut mettre plusieurs variables.

Créer une liste en Python⚓︎

Pour créer une liste :

▶️ Console
>>> liste = []

On peut voir le contenu de la liste en l'appelant :

▶️ Console
>>> liste
<type 'list'>

Ajouter une valeur à une liste⚓︎

On peut ajouter les valeurs que l'on veut lors de la création de la liste Python :

▶️ Console
>>> liste = [1, 2, 3]
>>> liste
[1, 2, 3]

Ou les ajouter après la création de la liste avec la méthode append (qui signifie « ajouter » en anglais) :

▶️ Console
>>> liste = []
>>> liste
[]
>>> liste.append(1)
>>> liste
[1]
>>> liste.append("ok")
>>> liste
[1, 'ok']

Il est possible de mélanger dans une même liste des variables de types différents. On peut d'ailleurs mettre une liste dans une liste.

Afficher un item d'une liste⚓︎

Pour lire une liste, on peut demander à voir l'index de la valeur concernée :

▶️ Console
>>> liste = ["a", "b", "c"]
>>> liste[0]
'a'
>>> liste[2]
'c'
Le premier item commence toujours avec l'index 0. Pour lire le premier item, on utilise la valeur 0, le deuxième on utilise la valeur 1, etc.

Il est d'ailleurs possible de modifier une valeur avec son index :

▶️ Console
>>> liste = ["a", "d", "c"]
>>> liste[0]
'a'
>>> liste[2]
'c'
>>> liste[2] = "x"
>>> liste
['a', 'd', 'x']

Supprimer une entrée avec un index⚓︎

Il est parfois nécessaire de supprimer une entrée de la liste. Pour cela, vous pouvez utiliser la fonction del :

▶️ Console
>>> liste = ["a", "b", "c"]
>>> del liste[1]
>>> liste
['a', 'c']

Supprimer une entrée avec sa valeur⚓︎

Il est possible de supprimer une entrée d'une liste avec sa valeur avec la méthode remove :

▶️ Console
>>> liste = ["a", "b", "c"]
>>> liste.remove("a")
>>> liste
['b', 'c']

Inverser les valeurs d'une liste⚓︎

On peut inverser les items d'une liste avec la méthode reverse :

▶️ Console
>>> liste = ["a", "b", "c"]
>>> liste.reverse()
>>> liste
['c', 'b', 'a']

Compter le nombre d'items d'une liste⚓︎

Il est possible de compter le nombre d'items d'une liste avec la fonction len :

▶️ Console
>>> liste = [1, 2, 3, 5, 10]
>>> len(liste)
5

Compter le nombre d'occurences d'une valeur⚓︎

Pour connaitre le nombre d'occurences d'une valeur dans une liste, vous pouvez utiliser la méthode count :

▶️ Console
>>> liste = ["a", "a", "a", "b", "c", "c"]
>>> liste.count("a")
3
>>> liste.count("c")
2

Trouver l'index d'une valeur⚓︎

La méthode index vous de connaître la position de l'item cherché :

▶️ Console
>>> liste = ["a", "a", "a", "b", "c", "c"]
>>> liste.index("b")
3

Manipuler une liste⚓︎

Voici quelques astuces pour manipuler des listes :

▶️ Console
>>> liste = [1, 10, 100, 250, 500]
>>> liste[0]
1
>>> liste[-1] # Cherche la dernière occurence
500
>>> liste[-4:] # Affiche les 4 dernières occurrences
[500, 250, 100, 10]
>>> liste[:] # Affiche toutes les occurences
[1, 10, 100, 250, 500]
>>> liste[2:4] = [69, 70]
[1, 10, 69, 70, 500]
>>> liste[:] = [] # vide la liste
[]

Parcours d'une liste⚓︎

Pour afficher les valeurs d'une liste, on peut utiliser une boucle :

▶️ Console
>>> liste = ["a", "b", "c"]
>>> for lettre in liste:
...     print lettre
... 
a
b
c

Si on veut en plus récupérer l'index, on peut utiliser la fonction enumerate :

▶️ Console
>>> for lettre in enumerate(liste):
...     print(lettre)
... 
(0, 'a')
(1, 'b')
(2, 'c')
Les valeurs retournées par la boucle sont des tuples.

Copier une liste⚓︎

Beaucoup de débutants font l'erreur de copier une liste de cette manière :

▶️ Console
>>> x = [1, 2, 3]
>>> y = x

Or si on change une valeur de la liste y, la liste x sera elle aussi affectée par cette modification :

▶️ Console
>>> x = [1, 2, 3]
>>> y = x
>>> y[0] = 4
>>> x
[4, 2, 3]

En fait, cette syntaxe permet de travailler sur un même élément nommé différemment.

Alors comment copier une liste qui sera indépendante ?

▶️ Console
>>> x = [1, 2, 3]
>>> y = x[:]
>>> y[0] = 9
>>> x
[1, 2, 3]
>>> y
[9, 2, 3]

Pour des données plus complexes, on peut utiliser la fonction deepcopy du module copy :

▶️ Console
>>> import copy
>>> x = [[1, 2], 2]
>>> y = copy.deepcopy(x)
>>> y[1] = [1, 2, 3]
>>> x
[[1, 2], 2]
>>> y
[[1, 2], [1, 2, 3]]

Transformer une chaîne en liste⚓︎

Parfois il peut être utile de transformer une chaîne de caractère en liste. Cela est possible avec la méthode split :

▶️ Console
>>> ma_chaine = "Jean-Claude:DUSSE:Galaswinda"
>>> ma_chaine.split(":")
['Jean-Claude', 'DUSSE', 'Galaswinda']

Transformer une liste en chaîne⚓︎

L'inverse est possible avec la méthode join :

▶️ Console
>>> liste = ["Jean-Claude", "DUSSE", "Galaswinda"]
>>> ":".join(liste)
'Jean-Claude:DUSSE:Galaswinda'

Trouver un item dans une liste⚓︎

Pour savoir si un élément est dans une liste, on peut utiliser le mot-clé in de cette manière :

▶️ Console
>>> liste = [1, 2, 3, 5, 10]
>>> 3 in liste
True
>>> 11 in liste
False

La fonction range⚓︎

La fonction range génère une liste composée d'une simple suite arithmétique :

▶️ Console
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Agrandir une liste par une liste⚓︎

Pour mettre bout à bout deux listes, on peut utiliser la méthode extend :

▶️ Console
>>> x = [1, 2, 3, 4]
>>> y = [4, 5, 1, 0]
>>> x.extend(y)
>>> print x
[1, 2, 3, 4, 4, 5, 1, 0]

Permutations⚓︎

La permutation d'un ensemble d'éléments est une liste de tous les cas possibles. Si on a besoin de cette fonctionnalité, inutile de réinventer la roue, itertools s'en occupe :

▶️ Console
>>> from itertools import permutations
>>> list(permutations(['a', 'b', 'c']))
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

Permutation d'une liste de liste⚓︎

Comment afficher tous les cas possibles d'une liste elle-même composée de liste ? Avec l'outil product de itertools :

▶️ Console
>>> from itertools import product
>>> list(product(['a', 'b'], ['c', 'd']))
[('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]

Astuces⚓︎

Afficher les 2 premiers éléments d'une liste :

▶️ Console
>>> liste = [1, 2, 3, 4, 5]
>>> liste[:2]
[1, 2]

Afficher le dernier item d'une liste :

▶️ Console
>>> liste = [1, 2, 3, 4, 5, 6]
>>> liste[-1]
6

Afficher le 3ème élément en partant de la fin :

▶️ Console
>>> liste = [1, 2, 3, 4, 5, 6]
>>> liste[-3]
4

Afficher les 3 derniers éléments d'une liste :

▶️ Console
>>> liste = [1, 2, 3, 4, 5, 6]
>>> liste[-3:]
[4, 5, 6]

On peut additionner deux listes pour les combiner ensemble en utilisant l'opérateur + :

▶️ Console
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> x + y
[1, 2, 3, 4, 5, 6]

On peut même mutiplier une liste :

▶️ Console
>>> x = [1, 2]
>>> x * 5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

Ce qui peut être utile pour initialiser une liste :

▶️ Console
>>> [0] * 5
[0, 0, 0, 0, 0]
>>> y = [0] * 3
>>> print(y)
[0, 0, 0]
>>> z = [y] * 2
>>> print(z)
[[0, 0, 0], [0, 0, 0]]