Création de listes en Python

Des listes et pas des tableaux

Contrairement à d’autres langages, Python propose des listes et non des tableaux. Cela a certains avantages :
– pas besoin de déclaration une taille de tableaux
– gestion dynamique de la liste
– des listes hétérogènes de différents types
– des opérations sur les listes (programmation objet).

Création de listes à une dimension

On peut tout d’abord créer une liste vide puis lui ajouter des éléments :

>>> A=[]
>>> print(A)
[]
>>> A.append(5)
>>> A.append("sept")
>>> print(A)
[5, 'sept']


On peut aussi directement créer une liste de façon exhaustive :

>>> B=[3,7,"deux",3.14]
>>> print(B)
[3, 7, 'deux', 3.14]
>>> print(B[1])
7

 

Pour créer des listes plus longues, on peut utiliser les compréhensions de listes :

>>> C=[0 for i in range(5)]
>>> print(C)
[0, 0, 0, 0, 0

NB : la syntaxe C=5*[0] fonctionne mais est à déconseiller car elle va entraîner des erreurs pour les tableaux à deux dimensions.

Enfin, on peut créer un tableau par copie de tableau. Mais attention à la syntaxe !

>>> D=[1,2,3]
>>> E=D
>>> F=D.copy()
>>> D.remove(2)
>>> print(D)
[1, 3]
>>> print(E)
[1, 3]
>>> print(F)
[1, 2, 3]

On voit sur l’exemple précédent que E reste lié avec D. C’est un deuxième pointeur (nom) sur une même liste.

Par contre F est bien une nouvelle liste, totalement indépendante de D. On peut aussi utiliser la syntaxe D[:] au lieu de D.copy().

On peut alors facilement créer toute sorte de listes :

>>> A=[x**2 for x in range(11)]
>>> A
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> B=[2*x+3 for x in range(11)]
>>> B
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
>>> C=[x for x in range(25) if x%3==0]
>>> C
[0, 3, 6, 9, 12, 15, 18, 21, 24]

 

Création de listes à deux dimensions

On peut la créer de façon exhaustive :

>>> A=[[1,2,3],[4,5,6]]
>>> print(A)
[[1, 2, 3], [4, 5, 6]]

On peut aussi utiliser les boucles :

>>> B=[[0 for j in range(10)] for i in range(3)]
>>> print(B)
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

 

Attention à l’exemple suivant :

>>> C=3*[10*[0]]
>>> print(C)
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>> C[0][0]=8
>>> print(C)
[[8, 0, 0, 0, 0, 0, 0, 0, 0, 0], [8, 0, 0, 0, 0, 0, 0, 0, 0, 0], [8, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

On voit que même si la liste C paraît correcte, les lignes sont en réalité des copies les unes des autres. Ce n’est normalement pas ce que l’on veut !

Et maintenant ?

Et bien, il est temps de les manipuler !