• Aucun résultat trouvé

En Python, il existe un autre type de liste : les tuples. Les tuples se manipulent exactement comme les listes, à une différence près, leurs éléments ne peuvent être modifiés. Si vous avez donc une liste de constantes à définir, il vaudra mieux utiliser un tuple pour ne pas prendre le risque de les modifier au cours de votre programme. Il sera toujours possible au cours de votre

programme d'ajouter des données dans un tuple à l'aide d'une addition de tuple par exemple.

Bien que 'tuple' soit un mot anglais prononcé 'teupeule', c'est aussi un mot bien français de la même famille que quintuple, sextuple, etc... La seule différence est qu'il désigne un ensemble d'objets sans en préciser la quantité. On ne pourra donc pas vous reprocher d'utiliser un anglicisme !

Les tuples se déclarent comme les listes mais sont délimités par des parenthèses '()' et non pas par des crochets '[]'. Ainsi, pour déclarer un tuple, il suffit de faire :

Code : Python

>> unTuple = tuple("Peuh !") >>> unTuple

('P', 'e', 'u', 'h', ' ', '!')

>>> unTuple = ('Peuh !', 23, 34, 45, True) >>> unTuple

('Peuh !', 23, 34, 45, True)>

Vous voyez donc qu'il existe une fonction tuple qui s'utilise de façon équivalente à la fonction list. Vous pouvez accéder aux données contenues dans un tuple exactement de la même manière que pour une liste en utilisant les indices ou les fonctions associées.

Maintenant que vous savez créer des listes, nous allons voir comment les modifier.

Modifier une liste

Il existe bien des manières de modifier une liste... Vous pouvez la modifier dans son intégralité en lui affectant une nouvelle valeur, par exemple :

Code : Python >>> liste = [23,32,43,45,56] >>> liste = liste * 2 >>> liste [23, 32, 43, 45, 56, 23, 32, 43, 45, 56]

OU

Code : Python >>> liste = [23,32,43,45,56] >>> liste [23, 32, 43, 45, 56]

>>> liste = ["Peuh !", "Pouet !"] >>> liste

['Peuh !', 'Pouet !']

Ici, j'ai créé une liste de nombres et j'ai décidé de la modifier en répétant deux fois la liste donnée initialement dans le premier cas et en lui affectant carrément une nouvelle liste dans le deuxième cas. Vous voyez qu'après cette opération, ma liste a

effectivement été modifiée. Mais il est aussi possible de ne modifier qu'un seul élément dans la liste :

Code : Python >>> liste [23, 32, 43, 45, 56, 23, 32, 43, 45, 56] >>> liste[2] = 200 >>> liste [23, 32, 200, 45, 56, 23, 32, 43, 45, 56]

Si vous souhaitez modifier tous les éléments d'une liste un par un à l'aide d'une boucle for, vous devrez utiliser une fonction particulière. Vous allez tout de suite comprendre pourquoi, regardez cet exemple :

Code : Python

>>> liste

[23, 32, 43, 45, 56, 23, 32, 43, 45, 56] >>> for element in liste :

element += 100

>>> liste

[23, 32, 43, 45, 56, 23, 32, 43, 45, 56]

Vous pouvez constater qu'aucun élément n'a été modifié dans la liste et c'est normal ! Car ici, c'est la variable element qui a été modifiée et elle ne fait pas partie intégrante de la liste ! Pour pouvoir modifier la liste élément par élément, il vous faudra donc accéder aux indices au sein de la liste. Pour ça, vous avez plusieurs solutions :

Code : Python

>>> liste

[23, 32, 200, 45, 56, 23, 32, 43, 45, 56] >>> for i in range(len(liste)) :

liste[i] += 100 >>> liste [123, 132, 300, 145, 156, 123, 132, 143, 145, 156]

OU

Code : Python >>> liste [23, 32, 43, 45, 56]

>>> for i, element in enumerate(liste) : liste[i] += 100

>>> liste

[123, 132, 143, 145, 156]

Dans le premier cas, vous utilisez les fonctions intégrées len pour obtenir la taille de la liste et la fonction range pour générer une liste des indices. Dans le second cas, la fonction intégrée enumerate (énumérer) vous retourne la liste des couples (indice, élément) de l'ensemble de votre liste. Ainsi, de cette manière, vous avez accès à la fois aux éléments de votre liste mais aussi à leur indice ! Nous avons vu ici comment modifier des éléments déjà présents dans une liste, mais il est possible d'ajouter et de retirer des éléments d'une liste ! Des fonctions appliquées aux listes permettent d'effectuer ce genre d'action :

Code : Python >>> liste = [23, 34, 45, 56, 67] >>> liste.append(78) >>> liste [23, 34, 45, 56, 67, 78] >>> liste.insert(2, 109) >>> liste [23, 34, 109, 45, 56, 67, 78] >>> liste.sort() >>> liste [23, 34, 45, 56, 67, 78, 109] >>> liste.sort(reverse = True) >>> liste [109, 78, 67, 56, 45, 34, 23] >>> liste.reverse() >>> liste [23, 34, 45, 56, 67, 78, 109] >>> liste.remove(78) >>> liste [23, 34, 45, 56, 67, 109] >>> del liste >>> liste

Traceback (most recent call last):

File "<pyshell#104>", line 1, in <module> liste

NameError: name 'liste' is not defined

J'applique ici des fonctions directement à ma liste. Remarquez que ces dernières la modifient directement. Ces fonctions sont donc :

append (ajouter) : ajoute l'élément passé en argument à la fin de la liste.

insert (insérer) : insère dans la liste à l'indice donné en premier argument l'élément donné en deuxième argument. sort (trier) : range dans l'ordre croissant les éléments de la liste (l'ordre peut être décroissant si l'argument reverse est mis

à True).

reverse (inverser) : inverse l'ordre des éléments dans la liste.

remove (retirer) : retire l'objet passé en argument de la liste. S'il y est présent plusieurs fois, seule la première occurrence

sera retirée.

Le mot clé del (diminutif de delete (supprimer)) suivi du nom de la liste la supprime carrément des variables déclarées ! Elle n'existe donc plus en mémoire après effacement avec del. C'est d'ailleurs pour cela qu'une erreur se produit puisque ma variable liste n'existe plus, je ne peux donc plus afficher sa valeur...

Pour une liste exhaustive sur les fonctions applicables aux tuples et aux listes, je vous laisse consulter la documentation qui reste le document le plus complet que vous puissiez vous procurez !

Nous allons voir maintenant comment manipuler les listes et ce que l'on peut en faire.

Manipuler les listes

Maintenant que l'on sait créer et modifier le contenu des listes, nous allons revoir comment les parcourir et rapidement à quoi cela peut servir. Voyons d'abord ce que l'on peut faire avec les fonctions intégrées :

Code : Python

>>> liste = [23,45,56,34] >>> sorted(liste)

[23, 34, 45, 56] >>> reversed(liste)

<list_reverseiterator object at 0x02064EB0> >>> for element in reversed(liste) :

print(element) 34 56 45 23 >>> sum(liste) 158 >>> len(liste) 4 >>> min(liste) 23 >>> max(liste) 56 >>> liste [23, 45, 56, 34]

J'utilise donc différentes fonctions intégrées qui ne modifient pas ma liste de départ :

sorted (rangé) : retourne la même liste mais avec les éléments rangés dans l'ordre croissant. reversed (inversé) : retourne la même liste mais avec les éléments dans l'ordre inverse. sum (somme) : retourne la somme de tous les éléments de la liste.

len (longueur) : retourne le nombre d'éléments dans la liste.

min/max (minimum/maximum) : retourne l'élément le plus petit/grand de la liste.

Ces fonctions présentent l'avantage de ne pas modifier nos listes et n'altèrent donc pas les données stockées.

Il est possible d'imbriquer des listes pour générer des tableaux ou matrices à plusieurs dimensions. Prenons un exemple :

Code : Python

>>> liste = []

>>> for i in range(10) :

liste.append(list(range(10)))

>>> for element in liste : print(element) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

On voit donc ici que j'ai créé une liste de liste. Pour n'accéder qu'à un seul élément dans une de ces listes, il suffit alors de spécifier les indices de cette manière :

Code : Python

>>> liste[2][3] 3

Le deuxième élément de liste étant lui-même une liste, il est alors possible d'accéder à ses éléments à l'aide de leur indice et c'est ce que je fais ici. Pour parcourir une liste de liste, on peut alors imbriquer les boucles for :

Code : Python

for ligne in liste :

for element in ligne : print(element)

Ce code vous affiche tous les éléments présents dans toutes les listes contenues dans la liste principale !

Les listes sont assez simples à manipuler et vous en utiliserez assez souvent... Leur maîtrise vient avec l'expérience et plus vous les utiliserez, plus leur utilisation sera instinctive.

Toutes les fonctions qui permettent de manipuler des listes sont aussi valables pour les tuples. Seules les fonctions altérant vos listes ne sont pas applicables aux tuples puisque leurs éléments ne peuvent être modifiés. N'hésitez pas à consulter la documentation à ce sujet !

Bien, maintenant que vous en savez un peu plus sur ce qu'il y a à savoir sur les listes, passons à un autre outil de stockage de données bien pratique : les dictionnaires.

Documents relatifs