Wallon
licence

Numérique et Sciences Informatiques


Les listes

1) Qu'est ce qu'une liste ?

Une liste est une variable particulière car elle peut stocker plusieurs valeurs
que l'on appellera les items de la liste. Une liste peut contenir des valeurs numériques ou des lettres.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]:

Chaque chaine de caractères est entre guillemets et séparée par une virgule.

dates =[1492, 1515, 1789, 1914, 1945, 1998, 2018] :

les valeurs numériques sont justes séparées par des virgules.

2) Les opérations sur les items de la liste:

Elles sont très utiles pour trouver la place d'un item , pour les indexations et autres comptages.

a) Comment créer une liste ou tous les items sont les mêmes ?

On utilise par exemple la syntaxe suivante : liste = [la valeur]* le nombre voulu d'items.

exemple : si on veut 9 fois le terme banane dans une liste, on écrit liste =["banane"]*9

Le liste peut, bien sur, être mixte et comporter plusieurs items.

exemple : liste = [1998,"étoile"]*5 donnera

[1998, 'étoile', 1998, 'étoile', 1998, 'étoile', 1998, 'étoile', 1998, 'étoile']

b) Comment afficher un item ?

L'indexation, c'est à dire la numérotation des items commence par 0, c'est la même chose que pour les chaines de caractères.

exemple : Dans la liste        chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
A la demande d'un                print( chateaux [ 1 ] )

l'affichage sera celui de l'item qui a le numéro 1 et donc : " Chambord ".

c) Comment modifier un item ?

L'index des items permet de modifier directement leur contenu.

exemple : Dans la liste        chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
la commande                       chateaux [ 2 ] = " Cheverny "

va remplacer Chenonceau qui est en place 2 par Cheverny

print (chateaux) donne ["Versailles", "Chambord", "Cheverny", "Amboise"]

d) Comment supprimer un item ?

La suppression d'un item peux se faire de deux façons différentes.

- avec la commande del (index de l'item)

exemple : Dans la liste        chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
la commande                       del chateaux [ 3 ]
supprime l'item " Amboise "

- avec la méthode remove ()

exemple : Dans la liste        chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
la commande                       chateaux.remove ("Versailles")
supprime l'item " Versailles ". Attention de ne pas oublier les guillemets !!

e) Comment inverser des items ?

Pour inverser l'ordre complet des items d'une liste, on utilise la méthode reverse.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
                 chateaux.reverse ()
                 print( chateaux )

donne                 ['Amboise', 'Chenonceau', 'Chambord', 'Versailles']

f) Comment peut on compter le nombre d'items ?

On peut compter le nombre d'items d'une liste en utilisant la fonction len.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
                 print( len ( chateaux ) )

va renvoyer la valeur 4 puisque la liste contient 4 items

g) Comment peut on compter les occurences d'un item ?

On peut compter le nombre de fois qu'un item apparait dans une liste en utilisant la méthode count.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Chambord", "Amboise", "Chambord"]
                 print(chateaux.count( "Chambord" ))

va renvoyer la valeur 3 puisque la liste contient 3 fois l'item "Chambord".

h) Comment peut on trouver l'index d'un item ?

On peut trouver ou se trouve un item dans une liste en utilisant la méthode index.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
                 print(chateaux.index( "Chambord" ))

va renvoyer la valeur 1 puisque l'index de l'item "Chambord" est sa place dans la liste.
Si on souhaite savoir si l'item est présent dans la liste avant de connaitre son index,on effectue un test:

chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
if("Versailles"in chateaux):
      print("item présent")
print("son index est",chateaux.index("Versailles"))

va renvoyer : item présent
                   son index est 0

i) Comment ajouter un item ?

L'ajout d'un item peux se faire par la méthode append().

exemple : Dans la liste        chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise"]
la commande                       chateaux.append ( Cheverny )
ajoute l'item " Cheverny " en bout de liste

résultat : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", " Cheverny "]

3) Les manipulations de listes:

Elles sont nombreuses et très utiles pour les tris , les classements et autres utilisations.

a) Comment peut on vider une liste ?

On peut vider une liste en utilisant la forme suivante.

exemple : chateaux =[ ]
                 print( chateaux )

va renvoyer une liste vide : [ ]

b) Comment peut on trier une liste ?

Pour trier une liste dans l'ordre alphabétique, on utilise la méthode sort.

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 chateaux.sort()
                 print( chateaux )

va renvoyer une liste triée alphabétiquement : ['Amboise', 'Chambord', 'Chenonceau', 'Montmirail', 'Versailles']

c) Comment peut on n'afficher qu'une partie de liste ?

Pour afficher une partie de liste qui commence au début de la liste, on procède comme suit :

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 print( chateaux [:3] )

va renvoyer les items d'index 0,1 et 2 ; le 3 n'est pas pris : ['Versailles', 'Chambord', 'Chenonceau']

Pour afficher une partie de liste comprise entre 2 index, on procède comme suit :

exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 print( chateaux [1:4] )

va renvoyer les items d'index 1,2 et 3 ; le 4 n'est pas pris : ['Chambord', 'Chenonceau', 'Amboise']

Vous aurez remarqué que dans l'intervalle [a : b], a est pris et b ne l'est pas !!

d) Comment peut on dupliquer une liste ?

Pour dupliquer une liste , on utilise un " = ".
exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 castel = chateaux
                 castel.append ("Vaux le Vicomte")
                 print( chateaux )

va renvoyer une liste ou est rajouté Vaux le Vicomte : ['Versailles', 'Chambord', 'Chenonceau', 'Amboise', 'Monmirail', 'Vaux le Vicomte']

Les deux listes étant liées ( par le = ), si on ajoute maintenant un item à chateaux, castel sera impacté :

                 castel.append ("Ussé")
                 print( castel )

va renvoyer une liste ou est rajouté Ussé : ['Versailles', 'Chambord', 'Chenonceau', 'Amboise', 'Monmirail', 'Vaux le Vicomte', 'Ussé' ]

e) Comment peut on créer deux listes en partie dupliquées mais qui restent indépendantes ?

Pour créer ce type de liste , on utilise un " = "et un " [:] ".
exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 castel = chateaux [:]
                 castel[2] = ("Ussé")
                 print( chateaux )

                 print( castel )

va renvoyer une liste chateaux identique à celle de départ et une liste castel ou est rajouté Ussé à l'index 2 donc à la place de Chenonceau :

['Versailles', 'Chambord', 'Chenonceau', 'Amboise', 'Monmirail']

['Versailles', 'Chambord', 'Ussé', 'Amboise', 'Monmirail']

Les listes sont bien indépendantes !

f) Comment peut on transformer une liste en une chaine de caractères ?

Pour faire cette transformation , on utilise la méthode join().
On peut séparer les items en insérant entre chaque un caractère particulier, cela permet de conserver des chaines de caractères compréhensibles, mais ce n'est pas obligatoire.
exemple : chateaux =["Versailles", "Chambord", "Chenonceau", "Amboise", "Montmirail"]
                 visite = " * ".join(chateaux)
                 print( visite )

va renvoyer une liste identique à celle de départ où les noms sont séparés par des *

Versailles * Chambord * Chenonceau * Amboise * Monmirail

remarque : les guillemets même vides avant le .join() sont indispensables

g) Comment peut on transformer une chaine de caractères en une liste ?

Pour faire cette transformation , on utilise la méthode split().
Il faut pour cela que les items soient séparés par un caractère particulier, cela permet de conserver des chaines de caractères compréhensibles et la transformation se fera grâce à ce caractère.
exemple : chateaux = "Versailles,Chambord,Chenonceau,Amboise,Montmirail"
                 visite =(chateaux).split(",")
                 print( visite )

va renvoyer une liste identique à celle de départ où les noms sont séparés à chaque rencontre d'une virgule

['Versailles', 'Chambord', 'Chenonceau', 'Amboise', 'Montmirail']

remarque : le séparateur, dans les parenthèses après le split, est indispensable ; ça peut être une lettre ou un chiffre.

h) Comment peut on concaténer deux listes( joindre plusieurs chaînes au sein d'une seule chaîne) ?

Pour faire cette transformation , on a deux méthodes.
- avec la méthode extend ()

exemple : Si on veut concatener la liste        chateaux1 =["Versailles", "Chambord", "Chenonceau", "Amboise"],
avec une liste                                             chateaux2 =["Cheverny", "Coussac-Bonneval", "Saumur"],
on utilise                                                    chateaux1.extend(chateaux2)
et la demande                                            print( chateaux1 )

va renvoyer une liste dans laquelle les deux listes seront mises bout à bout

['Versailles', 'Chambord', 'Chenonceau', 'Amboise', 'Cheverny', 'Coussac-Bonneval', 'Saumur']

- avec la méthode append ()

exemple : Dans la liste        chateaux1 =["Versailles", "Chambord", "Chenonceau", "Amboise"]
on veut ajouter la liste        chateaux2 =["Cheverny", "Coussac-Bonneval", "Saumur"],
La méthode append s'écrira chateaux1.append(chateaux2)
et la demande                    print( chateaux1 )

va renvoyer une liste contenant une autre liste

['Versailles', 'Chambord', 'Chenonceau', 'Amboise', ['Cheverny', 'Coussac-Bonneval', 'Saumur']]

remarque : la méthode extend "étend" la liste de départ et la complète alors que la méthode append "ajoute" une liste dans une liste.

3) Utilisation de la fonction range pour obtenir une liste d'entiers:

si on veut la liste des entiers de 1 à 50, plutot que de tout taper (et surtout si on va plus loin que 50), on utilise la fonction range (1,51).
exemple : range(15) est la même chose que [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
cette fonction est utilisée principalement dans les boucles. En effet on n'obtient pas la liste uniquement en tapant range(15).
Pour ça il faut plutot écrire :

liste=[]
for i in range (15):
      liste.append(i)
print (liste)
va renvoyer la liste suivante : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

remarque : De zéro à 14, il y a bien 15 valeurs : range (15) affiche donc les 15 premiers entiers. range (1,51) affichera les entiers de 1 à 50.

3) quelques exercices:

Les éléments d'une liste portent un index. Les index positifs démarrent à 0 en python et les index négatifs démarrent à -1 en partant de la fin :

si liste1 = [1,2,3], que vaut liste1[2] ?
si liste2 = [1,2,3], que vaut liste2[-2] ?
si liste3 = [[1,2],[1],[2, 1, 3]], que vaut liste3[-1], que vaut liste3[0][1] ?























TP
TP