Listes - list

Une liste - type list - est un moyen de regrouper des éléments d’information ou données :

  • Les éléments d’une liste sont ordonnés;
  • Chaque élément d’une liste est numéroté par un entier (positif ou négatif) appelé position ou index;
    • Le premier élément a la position 0, le second la position 1, etc.
    • Le dernier élément a la position -1, l’avant dernier la position -2, etc.
  • La longueur d’une liste est le nombre d’éléments qu’elle contient;

Opérations de base

  • Créer une liste «littéralement»:

    >>> l = [5, "liste", -2.3, (1,3)]
    >>> l
    [5, "liste", -2.3, (1,3)]
    
  • Connaître sa «longeur» ou le nombre de ses éléments - len(list):

    >>> len(l)
    4
    
  • Savoir si elt appartient ou non à une liste - elt in list:

    >>> l
    [5, "liste", -2.3, (1,3)]
    >>> -2.3 in l
    True
    >>> 1.3 in l
    False
    
  • Récupérer l’élément de position pos - l[pos]:

    >>> l[2] # l[0] premier elt, l[1] deuxième, ...
    -2.3
    >>> l[-1] # l[-1] dernier elt, l[-2] avant dernier, ...
    (1, 3)
    
  • Modifier l’élément de position pos - l[pos] = nouvel_elt:

    >>> l
    [5, "liste", -2.3, (1,3)]
    >>> l[-1] = 0
    >>> l
    [5, "liste", -2.3, 0]
    
  • Ajouter elt à la fin d’une liste - list.append(elt):

    >>> l.append(["b", "a", "c"])
    >>> l
    [5, "liste", -2.3, 0, ["b", "a", "c"]]
    >>> len(l)
    5
    
  • Insérer elt à la postion pos - list.insert(pos, elt)

    >>> l
    [5, "liste", -2.3, 0, ["b", "a", "c"]]
    >>> l.insert(2, "truc")
    >>> l
    [5, "liste", "truc", -2.3, 0, ["b", "a", "c"]]
    
  • Récupérer et supprimer le dernier élément (resp. celui de position pos) - list.pop([pos]):

    >>> x = l.pop() # si pos est omis la suppression concerne le dernier élément
    >>> x
    ["b", "a", "c"]
    >>> l
    [5, "liste", "truc", -2.3, 0]
    >>> l.pop(2)
    "truc"
    >>> l
    [5, "liste", -2.3, 0]
    
  • Supprimer l’élément de position pos - del l[pos]:

    >>> del l[0]
    >>> l
    ["liste", -2.3, 0]
    

Parcourt d’une liste

  • Direct - chaque élément est récupéré successivement - for elt in list::

    >>> l = [3, "truc", -2.5]
    >>> for elt in l:
    ...    print(elt)
    ...
    3
    truc
    -2.5
    
  • Par énumération - for pos, elt in enumerate(list)::

    >>> l = [3, "truc", -2.5]
    >>> # Rappels:
    >>> #   str(truc): convertit «truc» en chaîne de caractères
    >>> #   concaténation: "l[" + "3" + "]=" + "erreur" donne "l[3]=erreur"
    >>> for p, v in enumerate(l):
    ...    print("l[" + str(p) + "]=«" + str(v) + "»")
    ...
    l[0]=«3»
    l[1]=«truc»
    l[2]=«-2.5»
    
  • Indirect - en utilisant les positions des éléments dans la liste:

    >>> # Rappels:
    >>> #   range(nb): intervalle d'entiers [0,nb[ (nb exclus),
    >>> #   len(l): nombre d'éléments de l,
    >>> #     donc range(len(l)) représente toutes les positions possibles
    >>> #
    >>> for pos in range(len(l)):
    ...     elt = l[pos]
    ...     print("Pos. de «", elt,"»:", pos)
    ...
    Pos. de « 3 »: 0
    Pos. de « truc »: 1
    Pos. de « -2.5 »: 2
    

    Note

    Même si cette façon de parcourir une liste semble plus compliquée, la connaissance dans la boucle de la position de l’élément peut être déterminante dans certain problème.

  • Inverser le sens de parcourt for elt in reversed(list)::

    >>> for elt in reversed(l):
    ...    print(elt)
    ...
    -2.5
    truc
    3
    >>> # range(n1,n2,pas) -> n1, n1+pas, n1+2*pas, ... sans dépasser n2
    >>> for i in range(5,0,-1):
    ...    print(i, end=" ")
    ...
    5 4 3 2 1
    

Autres opérations utiles

  • Extraire une sous-liste d’éléments consécutifs - list[pos1:pos2]:

    >>> l = [3, 0, -2, 5]
    >>> # l[pos1:pos2] : positions récupérées = entiers de [pos1, pos2[ (pos2 exclus)
    >>> l[1:3]
    [0, -2]
    >>> # l[pos1:] ->  de pos1 (inclus) jusqu'à la fin de la liste
    >>> l[1:]
    [0, -2, 5]
    >>> # l[:pos2] -> du début de la liste jusqu'à pos2 (exclus)
    >>> l[:2]
    [3, 0]
    
  • Concaténer deux listes - list1 + list2:

    >>> l1 = [2, 5]
    >>> l2 = [3, 0]
    >>> l1 + l2
    [2, 5, 3, 0]
    
  • Inverser l’ordre des éléments - list.reverse():

    >>> l = [2, 5, 3, 0]
    >>> l.reverse()
    >>> l
    [0, 3, 5, 2]
    
  • Trier les éléments dans l’ordre croissant - list.sort():

    >>> l = [3, -1, 5, 0]
    >>> l.sort()
    >>> l
    [-1, 0, 3, 5]
    
  • Compter le nombre de fois où elt apparaît dans la liste - list.count(elt):

    >>> l = [0, 1, 0, 2, 0]
    >>> l.count(0)
    >>> 3
    
  • Produire une liste qui contient n fois le même élément - list * n:

    >>> [0] * 5
    [0, 0, 0, 0, 0]
    
  • Convertir un objet «composite» en liste - list(obj_composite):

    >>> list("abc")
    ["a", "b", "c"]
    >>> list(range(4))
    [0, 1, 2, 3]
    
  • Construire une liste en «compréhension»:

    >>> [x**2 for x in range(9)]
    [0,1,4,9,16,25,36,49,64,81]
    >>> [(x, y) for x in [-1,1] for y in [-1,1]]
    [(-1, -1), (-1, 1), (1, -1), (1, 1)]
    >>> [(x, y) for x in [-1,1] for y in [-1,1] if x != y]
    [(-1, 1), (1, -1)]