Como concatenar duas ou múltiplas listas em Python

Aditya Raj 30 janeiro 2023 17 fevereiro 2020
  1. + para concatenar duas listas em Python
  2. += para concatenar duas listas no lugar em Python
  3. O método itertools.chain concatenou duas listas em Python
  4. extend() método para concatenar listas em Python
  5. [*a, *b] método de desempacotamento na concatenação da lista Python
  6. Conclusão
Como concatenar duas ou múltiplas listas em Python

A list in Python é uma estrutura de dados que contém uma coleção ordenada de elementos.

Uma operação para colar duas listas é chamada concatenação. Você pode concatenar duas listas em Python no lugar* ou fora do lugar*.

Suponha que temos duas listas a serem concatenadas,

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]

Poderíamos ter vários métodos para concatená-los, mas eles diferem no desempenho quando o comprimento aumenta ou quando o número de listas concatenadas aumenta.

Vamos introduzir estes diferentes métodos e dar-lhe a comparação do desempenho.

+ para concatenar duas listas em Python

O operador + poderia concatenar duas listas e retornar uma nova lista.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = list1 + list2
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

+= para concatenar duas listas no lugar em Python

+= é semelhante ao método acima, mas irá alterar os dados da primeira lista em vigor.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1 += list2
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

O método itertools.chain concatenou duas listas em Python

String do módulo itertools trata sequências consecutivas como uma única sequência,

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> import itertools
>>> result = list(itertools.chain(list1, list2))
[1, 2, 3, 4, 5, 6, 7, 8]
Informações
O itertools.chain tem um construtor alternativo - intertools.chain.from_iterable(). Ele tem um único argumento iterável cujos inputs são avaliados preguiçosamente.

extend() método para concatenar listas em Python

Listar o método extender estende a lista anexando elementos do iterável.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

Ele também altera os dados da lista de saída no local, ao invés de retornar uma nova lista.

[*a, *b] método de desempacotamento na concatenação da lista Python

Desembalagem adicional como * para operador de desempacotamento iterável e ** para operador de desempacotamento de dicionário são extraídos do Python 3.5 como explicado em PEP-0448.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = [*list1, list2]
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

Este método não poderia ser aplicável ao caso das listas N, a menos que você queira descompactar cada lista manualmente.

Aviso
Não se pode usar o desempacotamento de embalagens, como se demonstra a seguir.
>>> A = [1,2,3]
>>> B = [4,5,6]
>>> C = [7,8,9]
>>> [*t for t in [A,B,C]]
SyntaxError: iterable unpacking cannot be used in comprehension

Conclusão

Versão No lugar?
a + b - Não
list(intertools.chain(a,b)) >=2.3 Não
[*a, *b] >=3.5 Não
a += b - Sim
a.extend(b) - Sim

Utilizamos módulo perfplot para comapare o desempenho dos métodos acima.

Comparação da Performance dos Métodos de Concatenação da Lista Python

Como mostrado no gráfico, os métodos a.extend(b) e a+b são quase os mesmos na performance e os melhores entre todos os métodos. O método list(chain(a,b)) tem a pior performance.

Artigo relacionado - Python List