Question Comment concaténer deux listes en Python?


Comment concaténer deux listes en Python?

Exemple:

listone = [1, 2, 3]
listtwo = [4, 5, 6]

Résultat attendu:

>>> joinedlist
[1, 2, 3, 4, 5, 6]

1637
2017-11-12 07:04


origine


Réponses:


Vous pouvez utiliser le + opérateur pour les combiner:

listone = [1,2,3]
listtwo = [4,5,6]

mergedlist = listone + listtwo

Sortie:

>>> mergedlist
[1,2,3,4,5,6]

2694
2017-11-12 07:07



Il est également possible de créer un générateur qui répète simplement les éléments des deux listes. Cela vous permet d'enchaîner les listes (ou tout itérable) pour le traitement sans copier les éléments dans une nouvelle liste:

import itertools
for item in itertools.chain(listone, listtwo):
   # do something with each list item

214
2017-11-12 20:01



Vous pouvez utiliser des ensembles pour obtenir une liste fusionnée de valeurs uniques

mergedlist = list(set(listone + listtwo))

154
2017-09-20 08:43



Vous pouvez également utiliser extend afin d'ajouter un list ajouter la fin d'un autre:

listone = [1,2,3]
listtwo = [4,5,6]
mergedlist = []
mergedlist.extend(listone)
mergedlist.extend(listtwo)

99
2018-02-25 15:13



Python >= 3.5 alternative: [*l1, *l2]

Même si c'est une vieille réponse, une autre alternative a été introduite par l'acceptation de PEP 448 ce qui mérite d'être mentionné.

Le PEP, intitulé Généralisations supplémentaires de déballage, généralement réduit certaines restrictions syntaxiques lors de l'utilisation du favori * expression en Python; avec elle, joindre deux listes (s'applique à n'importe quelle itérable) peut désormais être fait avec:

>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]

#unpack both iterables in a list literal
>>> joinedList = [*l1, *l2]
>>> print(joinedList)
[1, 2, 3, 4, 5, 6]

Cette fonctionnalité a été défini pour Python 3.5 il n'a pas été rétroporté aux versions précédentes dans le 3.x famille. Dans les versions non supportées SyntaxError va être soulevé.

Comme avec les autres approches, cela aussi crée comme copie superficielle des éléments dans les listes correspondantes.


le à l'envers à cette approche est que vous n'avez vraiment pas besoin de listes pour l'exécuter, tout ce qui est itérable fera l'affaire. Comme indiqué dans le PEP:

Ceci est également utile comme un moyen plus lisible de sommer les itérables dans un   liste, telle que my_list + list(my_tuple) + list(my_range) qui est maintenant   équivalent à juste [*my_list, *my_tuple, *my_range].

Donc, tout en ajoutant + soulèverait un TypeError en raison d'une incompatibilité de type:

l = [1, 2, 3]
r = range(4, 7)
res = l + r

Ce qui suit ne sera pas:

res = [*l, *r]

car il décompresse d'abord le contenu des itérations, puis crée simplement un list du contenu.


94
2017-11-12 07:07



C'est assez simple, je pense qu'il a même été montré dans le Didacticiel:

>>> listone = [1,2,3]
>>> listtwo = [4,5,6]
>>>
>>> listone + listtwo
[1, 2, 3, 4, 5, 6]

57
2018-03-05 09:15



Vous pouvez simplement utiliser le + ou += opérateur comme suit:

a = [1, 2, 3]
b = [4, 5, 6]

c = a + b

Ou:

c = []
a = [1, 2, 3]
b = [4, 5, 6]

c += (a + b)

En outre, si vous souhaitez que les valeurs de la liste fusionnée soient uniques, vous pouvez effectuer les opérations suivantes:

c = list(set(a + b))

33
2017-10-09 23:21