Info-PCSI2
N.Véron-LMB-2013
Mémo - Les listes en Python
Nous avons vu en cours qu’une liste est une collection ordonnée d’objets, pas nécessairement de
même type, qui est mutable ce qui signifie que l’on peut modifier ses éléments.
Déclaration et affectation d’une liste
>>> L1 = [1,2,3, ’soleil’] # les éléments peuvent être de différents
type
>>> L = [] # création d’une liste vide
On peut aussi créer des listes en compréhension :
>>> L = range(20) # liste des entiers de 0 à 19
>>> [i for i in L if i%2==1]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [i**2 for i in L if i%2==1]
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]
>>> [x for x in L if x**2 > 30]
[6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Accès à un élément : On utilise la syntaxe nomdelaliste[indice]. L’indice du 1er élément est 0.
>>> L1[3]
’soleil’
>>> L1[0]
1
Mais on peut aussi compter à partir du dernier :
>>> L1[-1]
’soleil ’
>>> L1[-2]
3
Autrement dit, dans le cas où on lui donne un index négatif, Python ajoute à celui-ci le nombre
d’éléments de la liste avant d’aller chercher l’élément.
Utilisation dans un boucle for : Une liste est un itérable aussi on peut utiliser la syntaxe :
for element in liste :
instructions
La variable
element
prendra successivement toutes les valeurs de la liste.
Extraction d’une sous liste : tranchage ou slicing
On peut découper une liste en « tranches » (opération connue sous le nom de « slicing » en
anglais) : Par exemple, pour obtenir les éléments de rangs 2 à 4 de la liste précédente :
>>> L1[2:4]
[7, ’soleil’]
Attention : ne pas oublier qu’en Python, les intervalles d’entiers sont fermés à gauche et
ouverts à droite.
On peut également remplacer une tranche d’une liste :
>>> L1 [1,2,3, ’soleil’]
>>> L1[1:3] = [’Bonjour ’, ’Hello ’, ’Guten Tag’, ’Buongiorno ’]
>>> L1
[1, ’Bonjour’, ’Hello’, ’Guten Tag’, ’Buongiorno’, ’soleil’]
De manière générale, la syntaxe des tranches est L1[start:stop:step] où start désigne l’indice où
commencer, stop l’indice avant lequel il faut s’arrêter et step l’incrément à donner à l’indice à
chaque étape. On peut omettre ces valeurs start, stop, step, auquel cas python leur donne
respectivement les valeurs 0, len(L1) et 1. Ainsi L1[1::2] désigne les éléments de L1 de rang impair
et L1[::2] ceux de rang pair.
Copier une liste
Faire le test suivant :
>>>A = [1, 6, 10, 6]
>>> B = A
>>> A[0] = 2
>>> print(A, B)