Back
Close

Apprendre Python dans le secondaire

CarrDav.ous
230.3K views

Cours : Les listes

Présentation des listes

Les listes sont des incontournables de la programmation. Tant qu'il n'y a que quelques informations à stocker, la création de quelques variables peut suffire. Cependant, il n'st pas possible d'entrer une à une 1000 informations dans une variable individuelle. Pour cela, la liste peut contenir plusieurs informations en un seul endroit. C'est cette liste qui sera sauvegardée dans une variable.

Écriture

Les listes en python sont définies par des crochets []. Les éléments de la liste sont disposés entre les crochets et séparés les uns des autres par une virgule ,.

Création d'une liste

Pour créer une liste, il y a plusieurs façons de faire :

  • Pour commencer, il est ipossible de crĂ©er une liste vide :

    liste_vide = []
    
  • En rentrant les donnĂ©es Ă  la main :
    Par exemple :

    ma_liste_de_nombres = [1, 4, 9, 3, 1, 2]
    ma_liste_de_courses =  ["stylo", "pile", "souris", "clavier"]
    ma_liste_de_coordonnées_de_vecteurs = [(1,1), (0,1), (1,6)]
    ma_liste_bordélique = ["un texte", 18, 5.4, True, (1,0)]
    

    N.B. : Il est possible de mélanger les types de données (chaine de caractères, nombre, booléen...) au sein d'une même liste.

  • En ajoutant des objets dans une liste :
    Il y a plusieurs façons de s'y prendre :

    • .append(obj) : il s'agit, en fait, d'une mĂ©thode. Le nom de la liste doit ĂŞtre renseignĂ© avant le nom de la mĂ©thode.
      Important : Elle modifie directement la liste et ne renvoie rien.

      L'appel à liste.append(objet) ajoute directement l'objet à la fin de la liste. La liste de départ a été modifiée !
      Il est possible de partir d'une liste vide, et ainsi ajouter des objets au fur et Ă  mesure Ă  l'aide d'une boucle.

      Dans l'exemple ci-dessous, une liste vide est créée puis remplie avec 100 nombres tirés au hasard entre 0 et 99 inclus.

    • .extend(autre_liste) : il s'agit Ă©galement d'une mĂ©thode. Le nom de la liste doit ĂŞtre renseignĂ© avant le nom de la mĂ©thode.
      Important : Elle modifie directement la liste et ne renvoie rien.

      L'appel à liste.extend(objet) ajoute directement tout le contenu de l'objet à la fin de la liste. La liste de départ a été modifiée !
      Important : L'objet doit ĂŞtre une liste.

    • liste1 + liste2 : Comme pour les chaines de caractères, le signe + va permettre de concatener les deux listes dans l'ordre dans lequel elles ont Ă©tĂ© renseignĂ©es. La diffĂ©rence avec la mĂ©thode .extend() est qu'aucune liste n'est modifiĂ©e ! Pour conserver le rĂ©sultat de la concatĂ©nation des deux listes, il est nĂ©cessaire de le sauvegarder dans une variable.

      Pour résumer, la méthode liste.extend(autre_liste) correspond à liste = liste + autre_liste mais, du coup, le contenu de la liste de départ a changé. L'utilisation de la méthode extend() n'est pas meilleur que l'utilisation de l'opérateur +, c'est le contexte qui détermine le meilleur usage.

      Le résultat de l'opération s'affiche. Cependant, il n'est pas conservé dans une variable. Si l'utilisation de ce résultat s'avère nécessaire, le sauvegarder dans une variable devient obligatoire.

  • liste * n : crĂ©e une nouvelle liste oĂą la liste est rĂ©pĂ©tĂ©e en boucle n fois.

  • Utiliser list(obj) : Cette fonction transforme, quand c'est possible, obj en liste.

  • En utilisant la fonction range : C'est une fonction qui donne une Ă©numĂ©ration de nombres. Petit rappel :

    • range(n) : crĂ©e une Ă©numĂ©ration de n nombres allant de 0 Ă  n-1. Et oui en informatique, il va falloir prendre l'habitude de toujours commencer Ă  0 et du coup finir Ă  n-1 si on veut n nombres en tout.
    • range(n1,n2) : crĂ©e une Ă©numĂ©ration de nombres allant de n1 Ă  n2-1.
    • range(n1,n2,pas) : crĂ©e une Ă©numĂ©ration de nombres allant de n1 Ă  n2-1 en sautant de pas en pas.

    Remarque importante : On a précisé ici que range fournit une énumération. En effet, ce n'est pas directement une liste de nombre comme on pourrait le penser quand on l'utilise avec for. On peut cependant très facilement en faire une liste en lui appliquant list().
    Par exemple :

    On remarquera que le premier exemple ne donne pas une liste et qu'il faut absolument rajouter list() pour l'obtenir.

  • CrĂ©ation de liste par comprĂ©hension : On peut s'en passer dans un premier temps mais c'est de loin la manière la plus puissante de crĂ©er une nouvelle liste Ă  partir de listes existantes. Voir le paragraphe dĂ©diĂ© plus bas.

Opérations sur les listes

Maintenant qu'on sait créer des listes, encore faut-il pouvoir les manipuler. Voici un résumé des principales actions sur les listes.

  • liste[n] : Permet de rĂ©cupĂ©rer l'Ă©lĂ©ment d'indice n. Attention : le premier Ă©lĂ©ment est d'indice 0 !

    Comme pour les chaines de caractères, un nombre négatif nous permet de partir de la fin. Astuce : Pour inverser deux éléments d'une liste, on peut écrire : liste[i], liste[j] = liste[j], liste[i]

  • liste[n1:n2] : Permet de rĂ©cupĂ©rer la liste des Ă©lĂ©ments d'indice compris entre n1 et n2-1.

    Comme pour les chaines de caractères, si on omet n1, on part du début et si on omet n2, on va jusqu'à la fin de la liste.

  • liste[n]= val : Permet de modifier la valeur de l'Ă©lĂ©ment d'indice n.

  • len(liste) : Donne la longueur de la liste (le nombre d'Ă©lĂ©ments).

  • liste.remove(element) : Retire element de la liste. Attention, il ne retire que la première occurrence, si element apparait plusieurs fois, il faut l'enlever plusieurs fois.

  • liste.reverse() : Renverse l'ordre de la liste.

  • liste.count(element) : Donne le nombre de fois oĂą element se trouve dans la liste.

  • sum(liste) : Donne la somme des Ă©lĂ©ments de la liste lorsque c'est une liste de nombres bien entendu. Extremement pratique car elle Ă©vite une boucle for et sert très souvent.

  • liste.sort() : Trie liste dans l'ordre croissant. Si on veux avoir un tri dans l'ordre dĂ©croissant il faut Ă©crire liste.sort(reverse=True).

  • sorted(liste) : Renvoie liste triĂ©e dans l'ordre croissant. Si on veux avoir un tri dans l'ordre dĂ©croissant il faut Ă©crire sorted(liste,reverse=True). Ces deux fonctions font semblablement la mĂŞme Ă  une grosse diffĂ©rence près : liste.sort() modifie liste ce qui veut dire qu'on perd notre liste de dĂ©part alors que sorted(liste) ne modifie pas liste, elle crĂ©e une nouvelle liste des Ă©lĂ©ments de liste triĂ©s.

  • element in liste : Renvoie True si element est dans la liste et False sinon.

    Remarquez bien que "stylos" n'est pas dans la liste car c'est "stylos rouges" qui y est, ce qui n'est pas la même chaine de caractères.

QCM

Voici quelques QCM pour voir si vous avez bien compris. N'hésitez pas à relire ce qui précède si vous avez un doute.

QCM 1

QCM 2
liste = [ 1, 3 ]
print(liste * 2)

QCM 3

QCM 4
liste = [ 1, 5, 4, 12, 7, 9 ,10 , 2]
print(liste[4])

QCM 5
liste = [ 1, 5, 4, 12, 7, 9 ,10 , 2]
print(liste[3:5])

QCM 6
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
print(...)

QCM 7
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste[5] = 6
print(liste)

QCM 8
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste.remove(5)
print(liste)

QCM 9
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste.sort()
print(liste)

QCM 10
liste = [ 1, 1+1, "un", "2+3", 7,  23, "1", "vingt trois"]
print(23 in liste)
print(2 in liste)
print(5 in liste)
print("7" in liste)
print("vingt" in liste)
print("23" in liste)
print("vingt trois" in liste)
print([7, 23] in liste)
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io