Comment puis-je obtenir la concaténation de deux listes en Python sans modifier l'une ou l'autre?



Answers

Selon la façon dont vous allez l'utiliser une fois qu'il est créé, itertools.chain pourrait être votre meilleur pari:

>>> import itertools
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = itertools.chain(a, b)

Cela crée un générateur pour les éléments de la liste combinée, ce qui présente l'avantage qu'aucune nouvelle liste n'a besoin d'être créée, mais vous pouvez toujours utiliser c comme s'il s'agissait de la concaténation des deux listes:

>>> for i in c:
...     print i
1
2
3
4
5
6

Si vos listes sont volumineuses et que l'efficacité est une préoccupation, cette méthode et d'autres du module itertools sont très pratiques à connaître.

Notez que cet exemple utilise les éléments de c , vous devrez donc le réinitialiser avant de pouvoir le réutiliser. Bien sûr, vous pouvez simplement utiliser list(c) pour créer la liste complète, mais cela créera une nouvelle liste en mémoire.

Question

Cette question a déjà une réponse ici:

En Python, la seule façon de concaténer deux listes est list.extend , qui modifie la première liste. Y at-il une fonction de concaténation qui renvoie son résultat sans modifier ses arguments?




Que diriez-vous de list1 + list2 ?




Juste pour que tu saches:

Lorsque vous écrivez list1 + list2 , vous appelez la méthode list1 de list1 , qui renvoie une nouvelle liste. de cette façon, vous pouvez également gérer myobject + list1 en ajoutant la méthode __add__ à votre classe personnelle.




Links