Quand on souhaite ajouter un élément à une liste en Python, il y a une différence entre la méthode append et la syntaxe avec le signe « + ».

Différence entre l’opérateur + et append lors de l’ajout dans une liste en Python: préliminaires

Étant donnée une liste L, on sait que l’on peut ajouter un élément en Python en utilisant l’une des deux solutions suivantes:

L = []
L.append('e')

ou

L = []
L += ['e']

Y a-t-il une différence entre ces deux possibilités ?

Pour le savoir, il faut décortiquer ce qu’elles font.

Différence entre l’opérateur + et append lors de l’ajout dans une liste en Python: l’opérateur « + »

Ce que fait l’opérateur « + »

L’appel de l’opérateur « + » oblige Python à créer une nouvelle liste en laissant de l’espace (à la fin de cette nouvelle liste) pour l’élément à insérer. Ensuite, la première liste est copiée dans celle fraîchement créée et enfin, l’élément est mis en dernier.

Pour résumer, quand on fait appel à l’opérateur « + »:

  • la liste initiale n’est pas modifiée;
  • une nouvelle liste (temporaire) est créée avec un espace en plus;
  • la liste initiale est copiée dans la liste temporaire;
  • le nouvel élément est inséré en fin de la liste temporaire;
  • le pointeur Python (le nom de la liste initiale) est redirigé vers la liste temporaire, qui n’est du coup plus temporaire, mettant ainsi à jour l’objet PythonList.

Complexité

L’ajout de n éléments via l’opérateur « + » admet une complexité en temps en O(n²).

En effet, s’il faut ajouter n éléments, l’opération précédemment expliquée va s’effectuer 1+2+…+n fois:

  • 1 fois pour le premier élément
  • 2 fois pour le deuxième
  • n fois pour le n-ième

Or, \(1+2+\cdots+n=\frac{n(n+1)}{2}\), d’où une complexité de l’ordre de n².

Différence entre l’opérateur + et append lors de l’ajout dans une liste en Python: la méthode append

Ce que fait la méthode append

Contrairement à l’opérateur « + », la méthode append ne crée pas de nouvelle liste. Elle crée un espace en plus à la suite de l’espace mémoire dédié à la liste à laquelle on souhaite ajouter un élément.

Complexité de la méthode append

Ajouter un élément à la suite de ce qui existe déjà a une complexité de O(1).

Conclusion: que doit-on privilégier ?

Il est évident, à la vue de la complexité des deux possibilités, que la méthode append est à privilégier à l’opérateur « + », même si elle est plus longue à écrire. Mais ceci est valable pour un n assez grand.

Voici un graphique pour vous en convaincre:

différence append + python
Comparaison de complexité entre l’opérateur « + » et la méthode append (extrait de cette page/)

Je dois bien dire que sur les exemples que je donne sur ce site, ma syntaxe tourne très souvent autour de l’opérateur « + » car il est bien plus facile (pour moi) d’écrire par exemple :  » L += [‘e’] » que « L.append(‘e’) ».

Vous le voyez sur le graphique ci-dessus, si n ne dépasse pas 20 000, ce n’est pas bien grave… Donc vous me pardonnerez je l’espère 🙂

Je pense donc qu’il est important de s’adapter selon ce que l’on fait. Bien évidemment, quand on travaille avec les Big Datas, la méthode append est à privilégier. Mais quand on est prof et que l’on manipule des mini-listes, on peut se permettre l’opérateur « + ». Mais chacun fait ce qu’il veut après tout…

Si vous souhaitez en savoir plus sur les liste, vous pouvez regarder du côté de cette page.

Découvrez les chansons que j'écris.

Cliquez ici

Catégories : InformatiquePython

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x
0
    0
    Votre panier
    Votre panier est vide