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 ouitertools.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
Saída:
apple, banana, cherryPasse uma string vazia '' como delimitador para concatenar sem nenhum separador.
Delimitadores Comuns
| Delimitador | Expressão | Resultado |
|---|---|---|
| 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, 30Usar uma expressão geradora obtém o mesmo resultado e permite formatar cada número conforme necessário:
Saída:
12345Construindo 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 threeEscolhendo a Abordagem Certa
| Objetivo | Melhor método |
|---|---|
| Mesclar duas listas em uma nova lista | Operador + |
| Adicionar todos os itens de uma lista em outra | extend() |
| Combinar múltiplos iteráveis sem cópia extra | itertools.chain() |
| Combinar dentro de um literal ou com itens extras | Desempacotamento [*a, *b] |
| Transformar uma lista de strings em uma string delimitada | str.join() |
| Transformar uma lista de números em uma string | str.join(map(str, lst)) |
Tópicos Relacionados
- Listas Python — criando, indexando e fatiando listas
- Métodos de Lista — referência completa para
append(),extend(),remove()e mais - Iterar Listas — iterando sobre elementos de lista com
forewhile - Copiar Listas — cópia superficial vs profunda
- Compreensão de Lista — construindo e transformando listas em uma expressão
- Concatenar Strings — outras formas de construir strings a partir de partes