Python : Listes

De Justine's wiki
Aller à la navigation Aller à la recherche

Méthodes de listes

Quelques méthodes de listes que je n'utilise pas souvent.

Je partirais ici d'une liste nommée L tel que L = ["a", "b", "c", "d"]

  • Supprimer un élément : L.remove("a")
  • Les index négatifs partent de la fin : print(L[-1]) >>> d
  • Découpage :
    • Du début : print(L[:2]) >>> ['a', 'b']
    • De la fin : print(L[2:]) >>> ['c', 'd']
    • Entre 2 : print(L[1:3]) >>> ['b', 'c']
      • L[n:p] renvoie les éléments de n inclut à p-1
    • Attention, Ce genre de découpage renvoie vers une copie de la liste et pas vers l'original ! Même si ça marche étrangement avec del : del (L[0:2]) fonctionne par exemple
  • La méthode index : L.index("b") >>> 1
    • Si l'élement recherché est plusieurs fois dans la liste, c'est la première occurence qui est renvoyée
  • Supprimer l'objet situé à un index : L.pop(2) supprime "c"
    • Utilisé seul, pop supprime le dernier élément d'une liste :
    • a = L.pop()

>>> L ['a', 'b', 'c'] >>> a 'd'

  • Insérer un truc à un index : L.insert(2, "oui") >>> ['a', 'b', 'oui', 'c', 'd']
    • La syntaxe : L.insert(index, objet)
  • Insérer une liste à la fin d'une autre : extend fonctionne comme append mais avec une liste : L.extend(["e", "f"]) >>> ['a', 'b', 'c', 'd', 'e', 'f']
  • Trier une liste : sort
    • >>> M = ["d", "b", "c", "a"]

>>> M.sort() >>> M

['a', 'b', 'c', 'd']

  • Trouver le min ou le max d'une liste : min(L) ou max(L)
  • Inverser une liste :
    • >>> L.reverse()

>>> L

['d', 'c', 'b', 'a']

enumerate : accéder aux index facilement

Une méthode simple pour énumérer le contenu d'une liste est d'utiliser la fonction enumerate (plutôt que de faire des compteurs...):

>>> li = ['a', 'b', 'c']
>>> for index, letter in enumerate(li):
...     print(index, letter)
... 
0 a
1 b
2 c

Comme on peut le voir, cela nous permet d'accéder aux index en même temps qu'aux contenus.

zip : boucler sur plusieurs listes

Pour faire des boucles sur plusieurs listes, le plus simple est la fonction zip :

>>> animaux = ["chien", "chat", "poisson"]
>>> cris = ["ouaf", "miaou", "bloups"]
>>> for animal, cri in zip(animaux, cris):
...     print(f'{animal}{cri}')
... 
chienouaf
chatmiaou
poissonbloups

Bon à savoir

La méthode for appliquée sur une liste est un peu spéciale. En effet, l'itérateur ne parcoure pas forcément la liste en entier mais il utilise un compteur invisible qui s'incrémente de 1 à chaque fois. Du coup, en modifiant la liste pendant qu'on la parcoure, on peut avoir des surprises : si on enlève des éléments notamment, comme la liste change en cours de route, cela peut poser problème.

def supprimeVoyelle (L,V) :
# fonction censée supprimée les chaines de la liste L contenant la voyelle V
   for i in L :
      if V in i :
         L.remove(i)

# programme principal
LSimpson = ["Homer", "Marge", "Bart", "Lisa", "Moe", "Charles", "Nelson", "Milhouse", "Krusty", "Barney"]
supprimeVoyelle (LSimpson,"a")
print(LSimpson) #Bart n'as pas disparu : ke compteur invisible a supprimé Marge, du coup Bart l'as remplacée sans être analysé 

 Par rapport aux suppressions :

def videListe(L) :
   L=[]

L = [1, 2, 3]
print(L)
videListe(L)
print(L)

Ça ne fonctionne pas parce que L = [] ne vide pas la liste, il crée un nouvel objet interne à la fonction (même si L est passée par référence... va comprendre). Il faut utiliser del L([:]).

Aussi, on peut créer une liste avec un objet range.

L = list(range(5, 18, 2))