Pesquise sobre a função “list.extend()”. Crie uma função em Python chamada mesclar_listas que aceite dois parâmetros, lista_a e lista_b (ambas listas). A função deve utilizar o método “list.extend()” para adicionar todos os elementos de lista_b ao final de lista_a. Ao final, retorne a lista lista_a modificada."
Passo 1
O que o enunciado pede:
- Criar uma função em Python chamada
mesclar_listasque receba dois parâmetros:lista_aelista_b(ambas listas). - A função deve usar o método
list.extend()para adicionar todos os elementos delista_bao final delista_a. - Ao final, a função deve retornar a lista
lista_amodificada.
Informações fornecidas pelo enunciado:
- Os nomes dos parâmetros:
lista_aelista_b. - O método a ser usado obrigatoriamente:
list.extend(). - Resultado esperado: retornar
lista_ajá com os elementos delista_badicionados.
Passo 2
O que faz
list.extend() (aula rápida e bem simples)list.extend(iterable)é um método de listas em Python que recebe um iterável (por exemplo outra lista) e adiciona, um a um, os elementos desse iterável ao final da lista que chama o método.- Importante:
extendmodifica a lista original (é mutável) e não cria uma nova lista. Ou seja, é uma operação “in-place”. extendretornaNone. Isso é padrão em métodos que alteram a própria estrutura (comoappend,sort,reverse): eles não retornam a nova lista, apenas modificam a original.- Complexidade: em geral é O(n) em relação ao número de elementos do iterável que você está acrescentando (n = comprimento de
lista_b).
Exemplo curto (explicado):
- Se
a = [1, 2]eb = [3, 4], ao fazera.extend(b)a listaapassa a ser[1, 2, 3, 4]. Depois da chamada,afoi alterada ebcontinua[3, 4]. A expressãoa.extend(b)em si avalia paraNone.
Passo 3
Diferença entre
extend e append (muito importante para a prova)append(x)adiciona o itemxinteiro como um único elemento no final da lista.- Ex.:
a = [1, 2]; a.append([3,4])resulta ema == [1, 2, [3, 4]].
- Ex.:
extend(iterable)adiciona cada elemento do iterável separadamente.- Ex.:
a = [1, 2]; a.extend([3,4])resulta ema == [1, 2, 3, 4].
- Ex.:
- Ou seja:
appendaumenta a profundidade (anexa um objeto),extendconcatena os elementos.
Passo 4
Implementando a função pedida — código e explicação linha a linha
- Requisitos lembrados: usar
extende retornarlista_a.
Código:
def mesclar_listas(lista_a, lista_b):
lista_a.extend(lista_b)
return lista_a
Explicação linha a linha:
def mesclar_listas(lista_a, lista_b):— declaramos a função com os dois parâmetros esperados.lista_a.extend(lista_b)— aqui usamos exatamente o método pedido. Essa linha pega cada elemento delista_be o adiciona ao final delista_a. Após essa linha,lista_afoi modificada (mutação in-place).return lista_a— retornamos a listalista_ajá modificada, conforme o enunciado.
Observação didática: não fazemos
return lista_a.extend(lista_b) porque extend retorna None. Em vez disso, chamamos extend para modificar a lista e depois retornamos explicitamente lista_a.Passo 5
Exemplos práticos (para você testar na hora da prova ou num terminal REPL)
- Exemplo 1:
a = [1, 2]
b = [3, 4]
mesclar_listas(a, b) # retorna [1, 2, 3, 4]
# após a chamada, a é [1, 2, 3, 4]
- Exemplo 2 (listas vazias):
a = []
b = [10]
mesclar_listas(a, b) # retorna [10]
- Exemplo 3 (lista_b vazia):
a = [7]
b = []
mesclar_listas(a, b) # retorna [7]
- Exemplo 4 (mesclar a si mesma — cuidado):
a = [1, 2]
mesclar_listas(a, a) # comportamento: tenta estender a com seus próprios elementos; isso duplicará os elementos atuais
# resultado esperado: [1, 2, 1, 2]
Comentário sobre o último exemplo: passar a mesma lista para os dois parâmetros funciona, mas pode não ser a intenção; em prova, se isso for um caso possível, mencione que a função altera
lista_a no local.Passo 6
Boas práticas, alternativas e armadilhas (o que escrever na prova se pedirem justificativa)
- Tipos: o método
extendaceita qualquer iterável, não só listas. Mas o enunciado pede listas, então estamos ok. - Se quiser evitar modificar a lista original e retornar uma nova lista, use concatenação:
return lista_a + lista_b— mas isso cria uma nova lista e não usaextend, então não atende ao enunciado. - Checagem de tipos (opcional): em contexto de prova pode mencionar que, para robustez, poderíamos checar
isinstance(lista_a, list)eisinstance(lista_b, list)e lançarTypeErrorcaso contrário. Nem sempre exigido em exercícios simples. - Complexidade: a operação é linear no tamanho de
lista_b. Selista_bfor grande, saiba que a operação escala com o número de itens adicionados. - Shallow copy:
extendfaz uma cópia rasa dos elementos (ou seja, referências aos objetos são copiadas). Se os elementos são mutáveis e compartilhados, alterações posteriores podem afetar ambos os lados.
Passo 7
Resumo final e incentivo
- Implementamos exatamente o pedido: função
mesclar_listasque usalist.extend()e retornalista_amodificada. - Dica para a prova: escreva o código direto como no Passo 4, e se o examinador pedir, explique que
extendmodifica in-place e que retornaNone, por isso retornamoslista_aseparadamente. - Você está indo bem! Repete esse exemplo no REPL umas duas vezes que fica gravado — respirar e praticar.
Resposta
def mesclar_listas(lista_a, lista_b):
lista_a.extend(lista_b)
return lista_a