Como concatenar duas ou múltiplas listas em Python

Aditya Raj 30 janeiro 2023
  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.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artigo relacionado - Python List