1.3. Les listes¶
# Afficher la table des matières
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Les listes sont très semblables aux chaînes, sauf que chaque élément peut être de n’importe quel type. La syntaxe pour créer des listes en Python est […]:
- Collection ordonnée (de gauche à droite) d’éléments (combinaison de types de données de base, données hétérogènes)
- De taille quelconque, peut grandir, rétrécir, être modifiée, être encapsulée (liste de listes de listes)
l = [1,2,3,4]
print(type(l))
print(l)
<class 'list'>
[1, 2, 3, 4]
Les éléments d’une liste peuvent ne pas être du même type :
l = [1, 'a', 1.0, 1-1j]
print(l)
[1, 'a', 1.0, (1-1j)]
Les listes Python peuvent être non-homogènes et arbitrairement imbriquées:
l1 = [1, [2, [3, [4, [5]]]]]
l1
[1, [2, [3, [4, [5]]]]]
1.3.1. Slicing¶
Les mêmes techniques de slicing utilisées précédement sur les chaînes de caractères peuvent également être utilisées pour manipuler les listes.
L=[ '14 ' ,'14231363 ' ,'14232541 ', 'MC1R ']
L[3]
'MC1R '
L[0:2]
['14 ', '14231363 ']
print(L[::3])
['14 ', 'MC1R ']
1.3.2. Manipulation de listes¶
On peut modifier les listes en attribuant de nouvelles valeurs aux éléments de la liste. Dans le jargon technique, on dit que les listes sont mutables.
L [3]= ' ENSOARG00000002239 ' # une liste est modifiable
L
['14 ', '14231363 ', '14232541 ', ' ENSOARG00000002239 ']
L [1]= int(L[1]) ; L[2]= int(L[2]) # conversion string -> integer
L # les elements sont de types differents
['14 ', 14231363, 14232541, ' ENSOARG00000002239 ']
Il existe un certain nombre de fonctions pratiques pour générer des listes de différents types. Exemple :
# Sous Python 3.x, on peut générer une liste en utilisant l'instruction suivante : List (range (start, stop, step)
list(range(1, 20, 6))
[1, 7, 13, 19]
# Convertir une chaîne en une liste :
s = "Bonjour"
s2=list(s)
s2
['B', 'o', 'n', 'j', 'o', 'u', 'r']
1.3.3. Fonctions/Opérations sur les listes¶
ajoute un élément à la fin de la liste avec
append
List =[3 , 2, 4, 1]
List.append(15) # ajoute un élément à la fin de la liste avec append
print(List)
[3, 2, 4, 1, 15]
étendre une liste avec
extend
List.extend ([7 , 8, 9]) # étendre la liste avec extend
print(List)
[3, 2, 4, 1, 15, 7, 8, 9]
Insérer un élément à une position spécifique à l’aide de
insert
List.insert(0, 111)
print(List)
[111, 3, 2, 4, 1, 15, 7, 8, 9]
Supprimer le premier élément correspondant à la valeur donnée à l’aide de
remove
List.remove(15)
print(List)
[111, 3, 2, 4, 1, 7, 8, 9]
Supprimer un élément à un emplacement donné à l’aide de
del
del List [3] # supprimer l'élément se trouvant à l'index 3 de la liste
print(List)
[111, 3, 2, 1, 7, 8, 9]
Tri d’une liste avec
sort
List.sort () # Tri de liste
List
[1, 2, 3, 7, 8, 9, 111]
Renoyer le nombre d’occurence d’une valeur dans la liste avec
count
List.count (3) # renvoie le nombre d'occurence de 3 dans la liste
1
Voir help(list) pour plus de détails, ou lire la documentation en ligne.
1.3.4. Bonnes pratiques¶
1.3.4.1. Arrêter d’untiliser = operator pour faire une copie de liste Python. Utilisze plutôt la méthode “copy”¶
Lorsque vous créez une copie d’une liste Python à l’aide de l’opérateur =, une modification de la nouvelle liste entraînera celle de l’ancienne. C’est parce que les deux listes pointent vers le même objet.
liste_1 = [1, 2, 3]
liste_2 = liste_1
liste_2.append(4)
liste_2
[1, 2, 3, 4]
liste_1
[1, 2, 3, 4]
Au lieu d’utiliser l’opérateur =, utilisez la méthode copy()
. Maintenant, votre ancienne liste ne changera pas lorsque vous modifierez votre nouvelle liste.
liste_1 = [1, 2, 3]
liste_2 = liste_1.copy()
liste_2.append(4)
liste_2
[1, 2, 3, 4]
liste_1
[1, 2, 3]
1.3.4.2. Enumerate : Obtenir le compteur et la valeur en bouclant¶
Généralement pour accéder à la fois à l’index et à la valeur d’un tableau (liste), on a souvent tendance à utiliser : for i in range(len(tableau))
.
Si c’est le cas, utilisez plutôt enumerate
. Le résultat est le même, mais il est beaucoup plus propre.
Tableau = ['a', 'b', 'c', 'd', 'e']
# Au lieu de
for i in range(len(Tableau)):
print(i, Tableau[i])
0 a
1 b
2 c
3 d
4 e
# Utilisez ça
for i, val in enumerate(Tableau):
print(i, val)
0 a
1 b
2 c
3 d
4 e
1.3.4.3. Différence entre “append” et “extend”¶
Pour ajouter une liste à une autre liste, utilisez la méthode append
. Pour ajouter des éléments d’une liste à une autre liste, utilisez la méthode extend
.
# Ajouter une liste à une liste
a = [1, 2, 3, 4]
a.append([5, 6])
a
[1, 2, 3, 4, [5, 6]]
# Ajouter des éléments à une liste
a = [1, 2, 3, 4]
a.extend([5, 6])
a
[1, 2, 3, 4, 5, 6]