HOWTO · Python
Ajouter des éléments multiples à une liste en Python
Nous pouvons ajouter plusieurs éléments à une liste en ajoutant manuellement les valeurs, ou nous pouvons utiliser les méthodes append(), extend(), concatenation et itertools.
Sur cette page
Pour ajouter à une liste Python existante les valeurs d’un itérable, utilisez la méthode extend(). Elle modifie la liste sur place. La méthode append() ajoute un seul objet par appel, tandis que + et itertools.chain suivi de list() créent une nouvelle liste. L’affectation par tranche permet d’insérer des valeurs à une position choisie.
Choisissez la méthode selon que vous souhaitez modifier une liste, l’endroit où doivent apparaître les nouvelles valeurs et le besoin d’obtenir un nouveau résultat. Les exemples ci-dessous illustrent le comportement de chaque option.
Ajouter un seul élément avec append()
append() est une méthode de liste qui ajoute son argument à la fin comme un seul objet. Si l’argument est lui-même une liste, celle-ci reste un unique élément imbriqué. Chaque appel à append() ajoute un objet.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["red", "blue"]
values.append("green")
print(values)
Pour ajouter plusieurs valeurs distinctes, vous pouvez appeler append() une fois par valeur. Si vous disposez d’un itérable de valeurs, extend() est généralement plus direct.
Ajouter plusieurs éléments avec extend()
extend() parcourt un itérable et ajoute à la liste existante chacune des valeurs qu’il fournit. La liste est modifiée sur place et la méthode renvoie None : continuez donc à utiliser la variable de la liste d’origine au lieu de lui affecter la valeur de retour de la méthode.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
colors = ["red", "blue"]
colors.extend(["green", "yellow"])
print(colors)
Cela fonctionne aussi avec d’autres itérables, comme un tuple ou une chaîne de caractères. Une chaîne fournit un caractère à la fois : l’extension avec "hi" ajoute donc séparément "h" et "i". Utilisez append() si vous souhaitez conserver l’itérable comme un seul objet.
Insérer plusieurs éléments avec l’affectation par tranche
L’affectation par tranche remplace la partie sélectionnée d’une liste par les valeurs d’un itérable. Une tranche vide ne sélectionne aucune valeur existante : lui affecter de nouvelles valeurs les insère donc tout en préservant le reste de la liste. L’indice détermine leur emplacement.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
items = ["a", "d"]
items[1:1] = ["b", "c"]
print(items)
Ici, la tranche commence et se termine à l’indice 1 ; les deux nouvelles valeurs sont donc placées avant le "d" d’origine. Une tranche non vide remplace les valeurs qu’elle sélectionne. Vérifiez ses limites si vous souhaitez insérer des valeurs plutôt que les remplacer.
Combiner des listes avec +
L’opérateur + concatène des listes et renvoie une nouvelle liste. Il ne modifie aucun des deux opérandes, ce qui permet de conserver les listes d’origine telles quelles.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
first = [1, 2]
second = [3, 4]
combined = first + second
print(combined)
Les deux opérandes doivent être des listes pour effectuer une concaténation de listes. Si vous voulez ajouter des valeurs à une liste existante, utilisez extend() plutôt que de créer puis d’affecter le résultat d’une concaténation.
Créer une liste à partir d’itérables avec itertools.chain
itertools.chain produit un itérateur qui fournit, dans l’ordre, les valeurs de ses itérables d’entrée. Enveloppez-le dans list() pour matérialiser ces valeurs dans une nouvelle liste. Cette approche est utile lorsque les entrées sont déjà des itérables ou lorsque vous souhaitez parcourir plusieurs sources ; elle ne modifie pas ces sources. Les performances dépendent des opérations environnantes et des données : aucune option n’est toujours plus efficace que les autres.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
from itertools import chain
numbers = [1, 2]
more_numbers = (3, 4)
combined = list(chain(numbers, more_numbers))
print(combined)
Vous pouvez aussi parcourir directement l’itérateur dans une boucle sans créer de liste. Ne le matérialisez que si vous avez besoin d’obtenir une liste.
Choisir la bonne approche
- Utilisez
append()pour ajouter un seul objet, ou appelez cette méthode plusieurs fois si vous traitez chaque valeur séparément. - Utilisez
extend()pour ajouter à une liste existante toutes les valeurs d’un itérable. - Utilisez l’affectation par tranche pour insérer les valeurs d’un itérable à une position précise ; une tranche vide permet de les insérer sans remplacer les valeurs existantes.
- Utilisez
+pour créer une nouvelle liste à partir de deux listes tout en laissant les listes d’entrée inchangées. - Utilisez
list(itertools.chain(...))pour créer une nouvelle liste à partir des valeurs fournies par plusieurs itérables. Omettezlist()si un itérateur suffit.
Pour ajouter plusieurs valeurs à une liste que vous avez déjà, commencez par extend(). Choisissez une autre option si vous devez insérer à un indice précis, obtenir une liste concaténée distincte ou parcourir plusieurs sources avec un itérateur.