Python extend() pour fusionner deux listes ensemble

La méthode Python extend() permet aux développeurs d’ajouter les éléments d’une deuxième liste à une liste existante. Élément important : on notera que les éléments seront ajoutés en fin de liste. Si vous cherchez à ajouter un élément à un emplacement spécifique d’une liste, ou seulement ajouter des éléments individuels, les méthodes Python insert ou Python append seront de meilleurs choix.

Fonctionnement et syntaxe de Python extend()

Le fonctionnement de la méthode Python extend() est très simple : la méthode ajoute une liste B à la fin d’une autre liste A, de sorte que le premier élément de la liste B se trouve après le dernier élément de la liste A directement. À partir de ce point, tous les éléments de la liste B sont ajoutés à la liste A. Les développeurs appellent ce processus une concaténation. La syntaxe de extend() est simple comme le montre la ligne de code suivante :

listeA.extend(listeB)
Python

Dans cet exemple, les éléments de listeB sont ajoutés à la fin de listeA. Mais la méthode ne renvoie pas de nouvelle liste avec tous les éléments : au lieu de cela, elle modifie directement la liste originale. La liste B n’est pas modifiée, contrairement à la liste initiale A. L’exemple suivant illustre concrètement le fonctionnement de la méthode Python extend() :

listeA = ["un", "deux", "trois"]
listeB = ["quatre", "cinq", "six"]
listeA.extend(listeB)
print(listeA) # Sortie: [‘un’, ‘deux’, ‘trois’, ‘quatre’, ‘cinq’, ‘six’]
listeA.extend([7, 8, 9])
print(listeA) # Sortie: [‘un’, ‘deux’, ‘trois’, ‘quatre’, ‘cinq’, ‘six’, 7, 8, 9]
Python

Cet exemple le montre bien : la méthode se comporte exactement comme prévu. Il est possible soit de créer la liste à rattacher à l’avance en tant qu’objet, soit la définir comme un paramètre lors de l’appel de la méthode. L’exemple montre aussi que les éléments des listes à fusionner peuvent être de n’importe quel type de données. En effet, une liste Python peut être hétérogène : elle peut contenir des données de différents types.

Bien que la méthode extend() sous Python soit le plus souvent utilisée pour concaténer deux listes, elle peut aussi servir pour d’autres applications à connaître. Non seulement la méthode extend() accepte les listes comme paramètres, mais aussi tous les itérables (c’est-à-dire des objets qui contiennent des éléments sur lesquels on peut itérer). Parmi ces itérables, on peut citer entre autres les Python Lists, les Python Strings ou encore les Python Dictionaries. À l’appel de la méthode extend(), il est possible de prendre n’importe quel itérable en paramètre. Les éléments de l’itérable sont alors ajoutés un par un à la liste. L’exemple suivant illustre cette propriété :

chars = [‘a’, ‘b’, ‘c’]
string = "def"
chars.extend(string)
print(chars) # Sortie: [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
Python

Dans cet exemple, une chaîne de caractères a été passée en argument. Les différents éléments de la chaîne (dans ce cas les caractères) ont été ajoutés un par un à la liste.

Alternatives à la méthode extend() sous Python

La méthode extend() sous Python propose une solution élégante pour étendre une liste aux éléments d’une autre liste. D’autre méthodes alternatives remplissent aussi cette fonction.

Opérateur d’addition

L’opérateur d’addition (le signe plus) est l’un des opérateurs Python les plus courants. On l’utilise généralement pour additionner deux nombres. Cependant, on peut aussi l’utiliser à d’autres fins dans Python – comme la fusion de listes. L’opérateur d’addition permet même de fusionner simultanément n’importe quel nombre de listes, comme le montre l’exemple suivant :

europe = ["France", "Allemagne"]
asie = ["Chine", "Inde"]
afrique = ["Soudan", "Mali"]
pays = europe + asie + afrique
print(europe) # Sortie: [‘France’, ‘Allemagne’]
print(asie) # Sortie: [‘Chine’, ‘Inde’]
print(afrique) # Sortie: [‘Soudan’, ‘Mali’]
print(pays) # Sortie: [‘France’, ‘Allemagne’, ‘Chine’, ‘Inde’, ‘Soudan’, ‘Mali’]
Python

On le voit ici : cette méthode donne presque le même résultat que la méthode extend()… à une différence importante près. Contrairement à la méthode extend(), l’opérateur d’addition ne modifie aucune des listes saisies en tant que paramètre. Au lieu de cela, le résultat est renvoyé sous forme de nouvelle liste. Comme un nouvel objet est créé en mémoire, l’opérateur d’addition est un peu moins efficace que la méthode extend() dès lors qu’il s’agit de fusionner deux listes. C’est un point qui peut faire la différence si vous travaillez avec de très grandes listes ou si vous cherchez à optimiser votre programme.

Conseil

En utilisant l’opérateur de concaténation (+=) au lieu de l’opérateur d’addition, aucune liste supplémentaire ne sera créée mais la liste originale sera modifiée. Cette alternative permet de contourner l’inconvénient de l’opérateur d’addition, même si extend() et += ne fonctionnent pas pareil pour tous les itératifs.

La méthode append()

La méthode append fonctionne comme extend() – à cette différence près qu’elle ne peut ajouter qu’un seul élément à une liste. Avec cette méthode, impossible de passer un itérable. Voici un exemple pour illustrer cela :

liste = [0, 1, 1, 2]
liste.extend([3])
print(liste) # Sortie: [0, 1, 1, 2, 3]
liste.append(5)
print(liste) # Sortie: [0, 1, 1, 2, 3, 5]
Python

Dans cet exemple, extend() et append() sortent le même résultat, sauf que la méthode append() n’oblige pas à indiquer l’élément à ajouter entre crochets. Mais si l’on cherche à rajouter plusieurs éléments à une liste avec append(), il faudrait passer par une itération sur liste déjà existante avec une Loop For Python. Voilà pourquoi on n’utilise en général append()que lorsqu’on qu’on veut ajouter un seul élément.

Conseil

Vous cherchez à mettre en ligne votre site Internet ou votre application Web rapidement, facilement et en direct ? Alors passez par Git avec Deploy Now par IONOS, une plateforme pensée pour vous !