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_listas que receba dois parâmetros: lista_a e lista_b (ambas listas).
  • A função deve usar o método list.extend() para adicionar todos os elementos de lista_b ao final de lista_a.
  • Ao final, a função deve retornar a lista lista_a modificada.
Informações fornecidas pelo enunciado:
  • Os nomes dos parâmetros: lista_a e lista_b.
  • O método a ser usado obrigatoriamente: list.extend().
  • Resultado esperado: retornar lista_a já com os elementos de lista_b adicionados.

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: extend modifica a lista original (é mutável) e não cria uma nova lista. Ou seja, é uma operação “in-place”.
  • extend retorna None. Isso é padrão em métodos que alteram a própria estrutura (como append, 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] e b = [3, 4], ao fazer a.extend(b) a lista a passa a ser [1, 2, 3, 4]. Depois da chamada, a foi alterada e b continua [3, 4]. A expressão a.extend(b) em si avalia para None.

Passo 3

Diferença entre extend e append (muito importante para a prova)
  • append(x) adiciona o item x inteiro como um único elemento no final da lista.
    • Ex.: a = [1, 2]; a.append([3,4]) resulta em a == [1, 2, [3, 4]].
  • extend(iterable) adiciona cada elemento do iterável separadamente.
    • Ex.: a = [1, 2]; a.extend([3,4]) resulta em a == [1, 2, 3, 4].
  • Ou seja: append aumenta a profundidade (anexa um objeto), extend concatena os elementos.

Passo 4

Implementando a função pedida — código e explicação linha a linha
  • Requisitos lembrados: usar extend e retornar lista_a.
Código:
def mesclar_listas(lista_a, lista_b):
    lista_a.extend(lista_b)
    return lista_a
Explicação linha a linha:
  1. def mesclar_listas(lista_a, lista_b): — declaramos a função com os dois parâmetros esperados.
  2. lista_a.extend(lista_b) — aqui usamos exatamente o método pedido. Essa linha pega cada elemento de lista_b e o adiciona ao final de lista_a. Após essa linha, lista_a foi modificada (mutação in-place).
  3. return lista_a — retornamos a lista lista_a já 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 extend aceita 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 usa extend, 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) e isinstance(lista_b, list) e lançar TypeError caso contrário. Nem sempre exigido em exercícios simples.
  • Complexidade: a operação é linear no tamanho de lista_b. Se lista_b for grande, saiba que a operação escala com o número de itens adicionados.
  • Shallow copy: extend faz 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_listas que usa list.extend() e retorna lista_a modificada.
  • Dica para a prova: escreva o código direto como no Passo 4, e se o examinador pedir, explique que extend modifica in-place e que retorna None, por isso retornamos lista_a separadamente.
  • 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

Exercícios relacionados