Python et les listes

Les listes en Python sont des structures de données qui permettent de rassembler des “objets” (des nombres, des chaînes de caractères, et d’autres objets). Une liste est définie par des crochets ouvrant et fermant.

Les listes en Python
Python et les listes

Création d’une liste

Manuellement

On peut constituer une liste de nombres de la manière suivante :

L = [ 1 , 5 , 3 , 8 , 6 , 15 ]

Ici, on dit que la longueur de la liste est 6 car il y a six éléments dans la liste. De manière analogue, on peut constituer une liste de chaînes de caractères:

P = [ "Jean" , "Paul" , "Pierre" , "Lucie" , "Mathilde" , "Fanie" ]

La longueur de cette dernière liste est aussi égale à 6.

On peut constituer des listes “mixtes”, qui contiennent des éléments qui n’ont pas le même type :

M = [ "Jean" , 3 , True , "Jeanne" , 5 , False ]

La longueur de cette dernière liste est aussi égale à 6. Elle est composée d’éléments de type string (chaîne de caractères), int (entier) et bool (booléen).

La fonction range

Si l’on souhaite créer une liste d’entiers successifs, on peut utiliser la fonction range.

L = range(100)

L est ici une liste constituée des entiers de 0 à 99.

L = range(12,50)

L est ici une liste constituée des entiers allant de 12 à 49.

L = range(10,1000,10)

Ici, L est une liste des entiers de 10 à 990 par pas de 10 (c’est-à-dire 10, 20, 30, …, 980, 990).

Listes par compréhension en Python

Si on cherche à créer une liste dont les éléments sont régis par une loi mathématique précise, on peut créer la liste par compréhension. Par exemple, pour créer la liste des 10 premiers carrés parfaits:

L = [ i**2 for i in range(10) ]
L = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
L = [ i*j for i in range(1,11) for j in range(1,11) ]

Cette syntaxe est équivalente à la suivante:

L = [ ]
for i in range(1,11):
    for j in range(1,11):
        L.append( i*j )
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18,
20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 
32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30,
36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8, 16, 24,
32, 40, 48, 56, 64, 72, 80, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 10,
20, 30, 40, 50, 60, 70, 80, 90, 100]

Si on souhaite construire la même liste sans les multiples de 5 par exemple, donc si on souhaite construire une liste avec condition(s), on pourra faire comme ceci:

L = [ i*j for i in range(1,11) for j in range(1,11) if i*j % 5 != 0]
[1, 2, 3, 4, 6, 7, 8, 9, 2, 4, 6, 8, 12, 14, 16, 18, 3, 6, 9, 12, 18,
21, 24, 27, 4, 8, 12, 16, 24, 28, 32, 36, 6, 12, 18, 24, 36, 42, 48,
54, 7, 14, 21, 28, 42, 49, 56, 63, 8, 16, 24, 32, 48, 56, 64, 72, 9,
18, 27, 36, 54, 63, 72, 81]

Opérations élémentaires sur les listes en Python

Somme de deux listes en Python

C’est peut-être bête, mais c’est bien pratique !

L = [ 'a' ]
P = [ 'b' ]
Q = L + P
Q = [ 'a' , 'b' ]

Ordonner une liste en Python

Cela peut se faire avec la méthode sort().

L = [ i*j for i in range(1,11) for j in range(1,11) if i*j % 5 != 0]
L.sort()
print( L )
[1, 2, 2, 3, 3, 4, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 12,
12, 12, 12, 14, 14, 16, 16, 16, 18, 18, 18, 18, 21, 21, 24, 24, 24,
24, 27, 27, 28, 28, 32, 32, 36, 36, 36, 42, 42, 48, 48, 49, 54, 54,
56, 56, 63, 63, 64, 72, 72, 81]

Si l’on souhaite ordonner de façon décroissante, on fera:

L.sort(reverse = True)

Avec cette méthode, la liste est irrémédiablement modifiée. Si l”on ne souhaite pas agir directement sur la liste, on peut utiliser la fonction sorted():

L = [ i*j for i in range(1,11) for j in range(1,11) if i*j % 5 != 0 ]
P = sorted( L )
print( L , '\n' , P )
[1, 2, 3, 4, 6, 7, 8, 9, 2, 4, 6, 8, 12, 14, 16, 18, 3, 6, 9, 12, 18,
21, 24, 27, 4, 8, 12, 16, 24, 28, 32, 36, 6, 12, 18, 24, 36, 42, 48,
54, 7, 14, 21, 28, 42, 49, 56, 63, 8, 16, 24, 32, 48, 56, 64, 72, 9,
18, 27, 36, 54, 63, 72, 81]

[1, 2, 2, 3, 3, 4, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 12,
12, 12, 12, 14, 14, 16, 16, 16, 18, 18, 18, 18, 21, 21, 24, 24, 24,
24, 27, 27, 28, 28, 32, 32, 36, 36, 36, 42, 42, 48, 48, 49, 54, 54,
56, 56, 63, 63, 64, 72, 72, 81]

Chasser les doublons

L = [ i*j for i in range(1,11) for j in range(1,11) if i*j % 5 != 0 ]
Q = [ ]
for i in L:
    if i not in Q:
        Q += [ i ]
Q.sort()
print( Q )
[1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 27, 28, 32, 36, 42,
48, 49, 54, 56, 63, 64, 72, 81]

Itérer sur deux listes en Python

M = [ 'Jean' , 'Dominique' , 'Mathilde' ]
P = [ 52 , 158 , 3 ]

for m, p in zip(M,P):
    print( '{:10} : {:003}'.format(m,p) )
Jean      : 052
Dominique : 158
Mathilde  : 003

Au passage, j’ai formaté les sorties de sorte que les prénoms soient affichés sur 10 caractères (afin que les “:” soient alignés) et les nombres sur 3 caractères (ça fait plus jolie je trouve).

Autres méthodes

Il existe d’autres méthodes sur les listes:

  • compter les occurrences d’un élément de la liste : count;
  • insérer un élément à une position donnée : insert;
  • supprimer un élément : remove;
  • vider une liste : clear;
  • connaître la position d’un élément dans la liste : index;
  • supprime le dernier élément : pop;

Plus d’infos : https://docs.python.org/3/tutorial/datastructures.html.

[Retour à la page principale]

Supportscreen tag