Considere o código em Python 3 a seguir.a = [2,4,3] b = a[:]...

Próximas questões
Com base no mesmo assunto
Q3952849 Programação

Considere o código em Python 3 a seguir.


a = [2,4,3] 


b = a[:]


c = a


a.append(7)


print(b + c) 



O resultado da execução desse código será

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

O que precisava saber: Era necessário distinguir dois comportamentos: b = a[:] gera uma nova lista com os mesmos elementos de a no momento da cópia, enquanto c = a faz c apontar para a mesma lista de a. Depois, a.append(7) altera a lista original, de modo que a e c passam a conter 7 no final. Por fim, o operador + entre listas faz concatenação, não soma numérica.

Critério decisivo: b = a[:] cria uma cópia rasa da lista no momento da atribuição, enquanto c = a cria uma referência para a mesma lista de a; após a.append(7), apenas a e c passam a conter o 7. Assim, b + c concatena [2, 4, 3] com [2, 4, 3, 7].

Tema central: Referência de listas, fatiamento (slice) e concatenação de listas em Python
Análise das alternativas
A
Errada
Incorreta, porque mostra [2, 4, 3, 2, 4, 3], que corresponderia à concatenação de b com outra lista sem o 7. Pela base, após a.append(7), c passa a ser [2, 4, 3, 7], então o segundo bloco da concatenação deve conter o 7.
B
Errada
Incorreta, porque a ordem dos elementos apresentada não corresponde ao conteúdo de b nem de c após o append. Pela base, b fica [2, 4, 3] e c fica [2, 4, 3, 7], sem qualquer reordenação dos elementos.
C
Errada
Incorreta, porque apresenta apenas [2, 4, 3, 7], que é o conteúdo de a e de c após o append, mas ignora que o comando final é b + c. Pela base, o operador + concatena listas, então o resultado precisa reunir os elementos de b e de c.
D
Certa
A alternativa D está correta porque respeita exatamente a sequência dos efeitos do código: b permanece [2, 4, 3], já que foi criado por fatiamento completo; c acompanha a alteração de a, pois referencia a mesma lista; e a.append(7) insere 7 ao final dessa lista compartilhada. Como print(b + c) concatena as duas listas, o resultado é [2, 4, 3, 2, 4, 3, 7].
E
Errada
Incorreta, porque o resultado [2, 4, 3, 7, 2, 4, 3] não corresponde à concatenação indicada pela base. Como b permanece [2, 4, 3] e c passa a [2, 4, 3, 7], a ordem correta de b + c é [2, 4, 3, 2, 4, 3, 7], e não a exibida nessa alternativa.
Pegadinha da questão
A pegadinha está em confundir cópia por fatiamento com simples referência. b = a[:] não é a mesma coisa que b = a. Além disso, append não cria nova lista: ele altera a lista existente. Também é essencial não confundir o operador + entre listas com soma de valores, pois ele faz concatenação.
Dica para questões semelhantes
  • Verifique sempre se a atribuição cria cópia da lista ou apenas outra referência para o mesmo objeto.
  • Quando houver append(), considere que a alteração ocorre na lista existente e afeta todas as variáveis que apontam para ela.
  • Em expressões com listas e operador +, trate o resultado como concatenação dos elementos na ordem em que as listas aparecem.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Não faz sentido ter ocorrência do 7 ao final se a variável A so é alteranda depois do processamento de B e C, teriamos a= [2,4,3,7] e b=[2,4,3] e c=[2,4,3]. Se o append fosse antes tudo bem

Parece simples, mas se não aprofundou como os tipos de objetos em python funcionam vai errar. o objeto tipo lista(list ou []) é objeto mutável e isso quer dizer que na hora da atribuição para outra variavel(c=a), c não é uma instância nova, mas a referência ou próprio objeto list. Agora o exemplo de "b = a[:]" ou "b = a[::]" ou "b = a.copy()" vai gerar uma cópia dos elementos dentro da lista e jogar em um objeto diferente. Isso se dá pela propriedade de mutabilidade do objeto "list"

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo