W3docs

Como Unir Listas em Python

Aprenda todas as formas de unir listas em Python: operador +, extend(), desempacotamento, itertools.chain e str.join() para converter em string.

Python oferece várias maneiras de combinar listas e de transformar uma lista de strings em uma única string. Esta página cobre ambas as tarefas de forma clara:

  • Unir listas — mesclar duas ou mais listas em uma nova lista (usando +, extend(), desempacotamento ou itertools.chain).
  • Unir elementos de uma lista em uma string — usando o método str.join(), que concatena os itens de uma lista em uma string delimitada.

Entender a diferença entre essas duas operações evita uma fonte comum de confusão para iniciantes.

Unindo Duas Listas em Uma

Usando o Operador +

A maneira mais simples de mesclar duas listas é o operador +. Ele retorna uma nova lista contendo todos os elementos de ambos os operandos sem alterar os originais.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)

Saída:

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

Você pode encadear + para mesclar mais de duas listas em uma expressão: a + b + c.

Usando o Método extend()

extend() adiciona todos os elementos de uma lista ao final de outra no lugar. Ao contrário de +, ele modifica a lista original e não cria uma nova.

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

Saída:

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

Use extend() quando não precisar manter a list1 original intacta e quiser evitar criar uma cópia extra na memória.

extend() vs append(): append() adiciona seu argumento como um único elemento, portanto list1.append(list2) produz [1, 2, 3, [4, 5, 6]] — uma lista aninhada, não uma mesclada. Sempre use extend() quando quiser achatar a segunda lista na primeira.

Usando Desempacotamento (Operador *)

Python 3.5 e versões posteriores permitem a sintaxe de desempacotamento com asterisco dentro de um literal de lista. Isso é conciso e funciona com qualquer número de iteráveis em uma única expressão.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)

Saída:

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

Você também pode inserir elementos extras inline: [0, *list1, *list2, 7].

Usando itertools.chain()

itertools.chain() da biblioteca padrão une qualquer número de iteráveis de forma preguiçosa — nenhuma lista intermediária é criada até que você solicite os valores. Esta é a opção mais eficiente em termos de memória quando você está processando sequências grandes.

import itertools

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list(itertools.chain(list1, list2))
print(combined)

Saída:

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

Passe itertools.chain(*nested) para achatar uma lista de listas em uma única chamada.

Unindo Elementos de uma Lista em uma String com str.join()

str.join() é um método de string — ele é chamado na string delimitadora e recebe um iterável como argumento. Retorna uma única string com todos os elementos concatenados, separados pelo delimitador.

delimiter.join(iterable)

Exemplo Básico

python— editable, runs on the server

Saída:

apple, banana, cherry

Passe uma string vazia '' como delimitador para concatenar sem nenhum separador.

Delimitadores Comuns

DelimitadorExpressãoResultado
Vírgula-espaço', '.join(['a', 'b', 'c'])a, b, c
Espaço' '.join(['Python', 'is', 'great'])Python is great
Hífen'-'.join(['2024', '01', '15'])2024-01-15
Nova linha'\n'.join(['line one', 'line two'])bloco multilinha
Sem separador''.join(['H', 'i', '!'])Hi!

Unindo uma Lista de Números

str.join() exige que cada elemento seja uma string. Passar inteiros diretamente gera um TypeError. Converta-os primeiro com map(str, ...) ou uma expressão geradora.

nums = [10, 20, 30]
result = ', '.join(map(str, nums))
print(result)

Saída:

10, 20, 30

Usar uma expressão geradora obtém o mesmo resultado e permite formatar cada número conforme necessário:

python— editable, runs on the server

Saída:

12345

Construindo Strings Multilinhas

'\n'.join() é a forma idiomática de construir uma string multilinha a partir de uma lista de linhas sem novas linhas finais.

lines = ['line one', 'line two', 'line three']
block = '\n'.join(lines)
print(block)

Saída:

line one
line two
line three

Escolhendo a Abordagem Certa

ObjetivoMelhor método
Mesclar duas listas em uma nova listaOperador +
Adicionar todos os itens de uma lista em outraextend()
Combinar múltiplos iteráveis sem cópia extraitertools.chain()
Combinar dentro de um literal ou com itens extrasDesempacotamento [*a, *b]
Transformar uma lista de strings em uma string delimitadastr.join()
Transformar uma lista de números em uma stringstr.join(map(str, lst))

Tópicos Relacionados

Prática

Prática
Which of the following ways can be used to join two lists in Python?
Which of the following ways can be used to join two lists in Python?
Was this page helpful?