Aller au contenu

Listes en Python

Définition des listes en Python

Définition

Tableau: Un tableau est une collection ordonnée d'éléments de n'importe quel type, organisés séquentiellement les uns à la suite des autres.

Info

En Python, un tableau est appelé liste. Il est de type list

Le tableau est modifiable par affectation, on dit qu'il est mutable

Bases sur les listes en Python

Création d'une liste

Dans une liste, tous les termes doivent être séparés par des virgules et entourés de crochets

Exemple

L = [1, 5, 8]

Info

Une liste peut aussi contenir des éléments de types différents

lst = [4, "bonjour", False, [7, 9]]

liste vide

La liste vide est notée []

lst = [] # liste vide

Accès aux éléments d'une liste en Python

Accéder aux éléments d'une liste

On accède à un élément d'une liste en mettant entre crochets l'indice de l'élémént (qui commence à zéro).

Exemple

>>> famille = ["Bart", "Lisa", "Maggie"]
>>> famille[0]
'Bart'
>>> famille[1]
'Lisa'
>>> famille[2]
'Maggie'

Danger

Un indice qui dépasse la valeur longueur de la liste -1 provoquera une erreur list index out of range.

Exemple:

>>> famille = ["Bart", "Lisa", "Maggie"]
>>> famille[3] # Erreur de type list index out of range
IndexError: list index out of range

Indices négatifs

Il est possible d'utiliser des indices négatifs.

\(-1\) correspond alors au dernier élément de la liste.

Exemple d'utilisation d'indices négatifs

>>> famille = ["Bart", "Lisa", "Maggie"]
>>> famille[-1]
'Maggie'
>>> famille[-2]
'Lisa'

Modification d'une liste par affectation en Python

Modification d'une liste

Les termes d'une listes peuvent être modifiés par affectation au cours d'un programme.

Cela est possible car les listes sont des objets mutables.

Exemple de modification par affectation

>>> animaux = ['renards', 'crocodiles', 'zèbres']
>>> animaux[1] = 'toucans'
>>> print(animaux)
['renards', 'toucans', 'zèbres']

Longueur d'une liste en Python

Longueur d'une liste

La longueur d'une liste sera donnée par la fonction len()

Exemple

>>> lst = [3, 'bonjour', True, [1, 2, 5]]
>>> len(lst)
4

Test d'appartenance avec in en Python

Tester l'appartenance d'un élément dans une liste

On peut tester si un élément appartient à une liste avec in

Example de test d'appartenance

>>> lst = ['n', 's', 'i']
>>> print('n' in lst)
True
>>> print('b' in lst)
False

Opération sur les listes en Python

La méthode append()

Les listes Python ont la particularité de pouvoir être allongées d'un élément en fin de liste, grâce à la méthode append()

Example d'utilisation de la méthode append()

>>> felins = ['chats', 'tigres', 'léopards']
>>> felins.append('lions')
>>> print(felins)
['chats', 'tigres', 'léopards', 'lions']

La concaténation

Avec l'opérateur +, on peut concaténer deux listes, c'est-à-dire créer une nouvelle liste formée avec deux listes.

Exemple de concaténation

>>> lst1 = [3, 5, 7]
>>> lst2 = [12, 15, 9]
>>> lst3 = lst1 + lst2
>>> print(lst3)
 [3, 5, 7, 12, 15, 9]

Multiplication par un entier

On peut utiliser la multiplication par un entier int pour dupliquer une liste.

Exemple de multiplication par un entier

>>> lst1 = [0]*5
>>> print(lst1)
 [0, 0, 0, 0, 0]
>>> lst2 = ['t', 'u']*3
>>> print(lst2)
['t', 'u', 't', 'u', 't', 'u']

Le slicing en Python

Le slicing

Le découpage de liste (appelé slicing) permet d'extraire un séquence d'une liste.

Soit lst une liste

La syntaxe lst[i:j] permet d'extraire de la liste tous les éléments consécutifs compris entre l'élément de rang i inclus et l'élément de rang j exclus.

Exemples de slicing

>>> jours = ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche']

## Les deux premiers jours de la semaine
>>> jours[0:2]
['lundi', 'mardi']

## On peut omettre le 0
>>> jours[:2]
['lundi', 'mardi']

## Du mardi au vendredi
>>> jours[1:5]
['mardi', 'mercredi', 'jeudi', 'vendredi']

## Du jeudi jusqu'à la fin
>>> jours[3:]
['jeudi', 'vendredi', 'samedi', 'dimanche']

## Tout sauf le dimanche
>>> jours[:-1]
['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']

Info

Dans le cas du slicing, il n'y a pas d'erreur d'indexation. Par exemple:

>>> lst = [1, 2, 3]
>>> lst[2021:]
[]

Liste en compréhension en Python

Info

Il est possible et élégant de construire une liste en compréhension avec le langage Python. C'est très pratique pour créer, transformer ou filtrer une liste.

Exemples de listes en compréhension

>>> nombres = [k for k in range(10)]
>>> nombres
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Il est bien sûr possible d'agir sur le paramètre :

>>> carres_parfaits = [k**2 for k in range(10)]
>>> carres_parfaits
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Filtrage

Ajouter une condition de filtrage permet de ne sélectionner que certains éléments de la liste.

Exemples de filtrages

>>> c = [n for n in carres_parfaits if n % 3 == 0]
>>> c
[0, 9, 36, 81]

Matrices: les listes de listes en Python

Création d'une liste de listes

Un tableau à double entrée, appelé matrice, peut être représenté par une liste de listes.

Exemples de matrices

7 9
5 2

L = [[7, 9], [5, 2]]

On peut aussi écrire sur plusieurs lignes pour plus de confort visuel:

L = [[7, 9],
     [5, 2]]

Exemple du jeu de morpion

Morpion

On peut représenter ce tableau par une liste de listes:

morpion = [['X', ' ', ' '], ['X', ' ', ' '], ['O', 'O', ' ']]

Bien sûr on peut mettre sur plusieurs lignes:

morpion = [['X', ' ', ' '],
          ['X', ' ', ' '],
          ['O', 'O', ' ']]

Convention sur les lignes et les colonnes

Par convention, les lignes sont notées avec l'indice \(i\) et les colonnes sont notées avec \(j\).

Exemples d'accès aux éléments des matrices

morpion[i][j] # ligne d'indice i, colonne d'indice j
morpion[0][0] # ligne 1, colonne 1
morpion[0][0] # 'X'
morpion[2][1] # 'O'
morpion[1][2] # ' '

On suppose que le joueur 'X' veuille empêcher le joueur 'O' de gagner:

morpion[2][2] = 'X'
# morpion = [['X', ' ', ' '],
#           ['X', ' ', ' '],
#           ['O', 'O', 'X']]

Matrices en compréhension

On peut générer des matrices en compréhension

Exemple de matrice en compréhension

>>> matrice = [[i+j for j in range(3)] for i in range(3)]
>>> matrice
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

Dernière mise à jour: 2022-09-04