liste

Python

Anglais : list

Une liste, classe List () ,est une séquence.

Documentation de référence sur les listes

Une liste est un objet mutable (contrairement par exemple aux tuples).

Une première façon de créer une liste (par extension : on liste les éléments de la liste)

Une liste de 3 éléments 1, 2 et 3 :

[1, 2, 3]

Une liste de listes :

[[1, 2, 3], [4, 6], [9, 2, 0]]

Une liste vide :

[]

Attention, à bien utiliser des crochets et non des parenthèses ou des accolades :

(1, 2, 3) est un tuple (donc non mutable) et non une liste (qui elle est mutable)

Une deuxième façon de créer une liste (par intension (en anglais "comprehension") : on donne une règle, un prédicat)

  • l1 = [i **2 for i in range (1,100)] # les puissances de i pour i allant de 1 à 100, non inclus
  • l2 = [sqrt(x) for x in srange(0, 10, .1)] # La racine carrée de x pour x allant de 0 à 10 non inclus, par pas de 0.1, à savoir 0.0, 0.1, 0.2, 0.3, ....
  • [i for i in rang (1,n) if predicat(i)] # on ne garde que les i qui satisfont au prédicat
  • [x + y for x in l1 for y in l2] # on somme tous les couples de x et de y, x appartenant à l1 et y à l2

Un exemple de Nathann Cohen (en Sage pour utiliser les graphes, mais on utilise le concept de liste par intension de Python)

Quel est le nombre d'entiers inférieurs à 100 (donnez la liste de ces entiers) tel que la différence entre n'importe quel couple de ces entiers n'est jamais un carré?

sage: n=100

sage: g=Graph(n) # un graphe de 100 sommets de 0 à 99

sage: carres=[i*2 for i in range(sqrt(n))]] #liste des carrés des nombres entiers inférieurs à racine carrée de 100

sage: edges=[(i,j) for (i,j) in CartesianProduct(range(n),range(n)) if (i!=j and abs(i-j) in carres)]

# on construit une liste de tuples pour définir les arêtes du graphe. Le prédicat traduit bien l'énoncé. Une arête entre deux sommets dont la différence est un carré

# L'utilisation du produit cartésien était inutile on pouvait écrire :

# sage: edges=[(i,j) for i range(n) for j in range(n) if (i!=j and abs(i-j) in carres)]

sage: g.add_edges(edges) # on ajoute les arêtes au graphe

sage: g.independent_set() # Cette fonction nous donne les sommets non reliés

[2,4,7,9,14,19,21,24,26,31,36,41,48,54,59,69,74,76,81,86,91,93,96,98]

sage : d.independent_set().length()

24

Accès à un élément ou à une tranche (valable pour toutes les séquences)

Attention, ce qui pour certains autres langages est hérétique, il n'y a jamais d'erreur de déclenchée!!!!!

s[i] ième élément de s
s[i:j] sous-séquence de s des éléments i à j (j non inclus)
s[i:j:k] sous-séquence de s des éléments i à j avec un incrément de valeur k (j non inclus)
len(s) longueur de s


Les méthodes applicables à une liste

  • l.insert(pos, elt) a pour effet d'insérer un élément elt à la position pos
  • pos ==0, on insère en tête, en position 0,
  • pos == len(l) on insère après le dernier élément (le dernier élément est en position len(l)-1). C'est donc équivalent à l.append(elt)
  • Autres valeurs de pos? Valeurs de pos négatives?
  • l.extend(L) où L est une liste a pour effet de rallonger la liste l en ajoutant à la fin tous les éléments de la liste donnée ; cela a le même effet que l'opération suivante utilisant la notation de tranche - slice (l[len(a):] = L.
  • l.remove(elt) a pour effet d'enlever le premier élément de la liste dont la valeur est elt. Si l'opération enlève effectivement un élément, la longueur de la liste diminue de 1. L'exception value_error est déclenchée si elt n'est pas présent.
  • l.pop([i]) a pour effet d'enlever l'élément présent à la position donnée dans la liste, et le renvoie. Si aucun indice n'est spécifié, a.pop() renvoie le dernier élément de la liste. L'élément est aussi supprimé de la liste.
  • l.index(x) a pour effet de retourner l'indice dans la liste du premier élément dont la valeur est x. Il y a erreur si cet élément n'existe pas.
  • l.count(x) a pour effet de renvoyer le nombre de fois que x apparaît dans la liste.
  • l.sort() a pour effet de trier les éléments à l'intérieur de la liste.
  • l.reverse() a pour effet d'inverser l'ordre des éléments à l'intérieur de la liste.

Une liste peut en fait être utilisée comme une pile

Une liste peut être utilisée comme une file, par exemple une file PAPS (Premier Arrivé - Premier Servi - FIFO - First In First Out)

Une utilisation de listes avec Sage

La fonction solve

Soit 6 fonctions sur x, à savoir, f,g, h, i, j et k. On veut résoudre un système de 3 équations (le système est passé en paramètre à la fonction solve sous forme d'un liste de 3 éléments).

Le résultat est donné sous forme d'une liste de valeurs.

Liste vide : pas de solutions

....

liste des résultats = solve ([f == g, h == i, j == k), x)


» Glossaire du langage python