3113 votes

Quelle est la différence entre les méthodes de liste de Python append et extend ?

Quelle est la différence entre les méthodes de la liste append() et extend() ?

15voto

bconstanzo Points 438

Un point intéressant qui a été suggéré, mais pas expliqué, est que extend est plus rapide que append. Toute boucle contenant append devrait être remplacée par list.extend(processed_elements).

N'oubliez pas que l'apprentissage de nouveaux éléments peut entraîner le déplacement de la liste entière vers un meilleur emplacement en mémoire. Si cela est fait plusieurs fois parce que nous ajoutons un élément à la fois, les performances globales en souffrent. En ce sens, list.extend est analogue à "".join(stringlist).

14voto

Shiv Points 167

Append ajoute l'ensemble des données en une seule fois. L'ensemble des données sera ajouté à l'index nouvellement créé. D'autre part, extend comme son nom l'indique, étend le tableau actuel.

Par exemple

list1 = [123, 456, 678]
list2 = [111, 222]

Avec append on obtient :

result = [123, 456, 678, [111, 222]]

Alors que sur extend on obtient :

result = [123, 456, 678, 111, 222]

11voto

mario23 Points 322

Un dictionnaire anglais définit les mots append et extend comme :

ajouter : ajouter (quelque chose) à la fin d'un document écrit.
étendre : rendre plus grand. Agrandir ou élargir


Avec cette connaissance, comprenons maintenant

1) La différence entre append et extend

append :

  • Ajoute tout objet Python tel quel à la fin de la liste (c'est-à-dire comme un le dernier élément de la liste).
  • La liste résultante peut être imbriquée et contenir des éléments hétérogènes (par exemple, liste, chaîne de caractères, tuple, dictionnaire, ensemble, etc.)

extend :

  • Accepte tout itérable comme argument et rend la liste plus grand .
  • La liste résultante est toujours une liste unidimensionnelle (c'est-à-dire sans imbrication) et elle peut contenir des éléments hétérogènes (par exemple des caractères, des entiers, des flottants) suite à l'application de la méthode list(iterable) .

2) Similitude entre append et extend

  • Les deux prennent exactement un argument.
  • Les deux modifient la liste en place .
  • Par conséquent, les deux rendements None .

Exemple

lis = [1, 2, 3]

# 'extend' is equivalent to this
lis = lis + list(iterable)

# 'append' simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
list.append(object)

6voto

Crabime Points 311

J'espère pouvoir apporter un complément utile à cette question. Si votre liste stocke un objet de type spécifique, par exemple Info voici une situation dans laquelle extend ne convient pas : Dans un for et en générant une Info à chaque fois et en utilisant extend pour le stocker dans votre liste, il échouera. L'exception est comme ci-dessous :

TypeError : L'objet 'Info' n'est pas itérable.

Mais si vous utilisez le append le résultat est correct. Parce qu'à chaque fois que l'on utilise la méthode extend il la traitera toujours comme une liste ou tout autre type de collection, l'itérera et la placera après la liste précédente. Un objet spécifique ne peut pas être itéré, évidemment.

5voto

Algebra Points 5633

Pour les distinguer intuitivement

l1 = ['a', 'b', 'c']
l2 = ['d', 'e', 'f']
l1.append(l2)
l1
['a', 'b', 'c', ['d', 'e', 'f']]

C'est comme si l1 reproduire un corps à l'intérieur de son corps (imbriqué).

# Reset l1 = ['a', 'b', 'c']
l1.extend(l2)
l1
['a', 'b', 'c', 'd', 'e', 'f']

C'est comme si deux individus séparés se mariaient et construisaient une famille unie.

En outre, j'ai établi une liste exhaustive de toutes les méthodes de la liste pour votre référence.

list_methods = {'Add': {'extend', 'append', 'insert'},
                'Remove': {'pop', 'remove', 'clear'}
                'Sort': {'reverse', 'sort'},
                'Search': {'count', 'index'},
                'Copy': {'copy'},
                }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X