Questão nº 30
Questão de Recursos Energéticos · FGV EPE 2024 (nº 30)
Considere o código a seguir, escrito na linguagem de programação Python (versão 3.11.3).
```
<1> x = []
<2> for i in range(1,10,2):
<3> x.append(i)
<4> y = x
<5> x[1] = 0
<6> z = y[1]
```
Assinale a opção que indica o valor que z recebe na linha <6>.
- A0 (alternativa correta)
- B1
- C3
- D[0, 0, 0, 0, 0]
- E[0]
Resposta comentada
Gabarito Alternativa A
Em Python, quando você atribui uma lista a outra variável (ex: y = x), você não cria uma nova lista. Em vez disso, a nova variável (y) passa a ser uma referência para a mesma lista que a variável original (x) já aponta. Ambas as variáveis "olham" para o mesmo objeto na memória.
- (A) Correta: A linha
<1>inicializaxcomo uma lista vazia. O loop nas linhas<2>e<3>preenchexcom os valores ímpares de 1 a 9, resultando emx = [1, 3, 5, 7, 9]. Na linha<4>,y = xfaz com queyse torne uma referência para a mesma lista quexaponta. Ou seja,xeyagora "apontam" para o mesmo objeto[1, 3, 5, 7, 9]na memória. Na linha<5>,x[1] = 0modifica o elemento na posição de índice 1 da lista para0. Comoxeyreferenciam a mesma lista, essa modificação afeta a lista para ambas as variáveis, tornando-a[1, 0, 5, 7, 9]. Finalmente, na linha<6>,z = y[1]atribui azo valor do elemento na posição de índice 1 da lista referenciada pory, que é0. - (B) Incorreta: O valor
1é o elemento na posição de índice0da lista (y[0]), não na posição1. - (C) Incorreta: O valor
3era o elemento na posição de índice1antes da modificação na linha<5>(x[1] = 0). Esta é a armadilha da banca: assume-se erroneamente quey = xcria uma cópia independente da lista, de modo que a modificação emxnão afetariay. No entanto, em Python, para objetos mutáveis como listas,y = xcria uma nova referência para o mesmo objeto, não uma cópia. - (D) Incorreta:
[0, 0, 0, 0, 0]seria o valor da lista se todos os seus elementos fossem alterados para0, o que não acontece com a operaçãox[1] = 0. Além disso,z = y[1]atribui um único elemento, não uma lista. - (E) Incorreta:
[0]seria uma lista contendo o valor0. A operaçãoz = y[1]atribui um único valor numérico az, não uma lista.
Fonte: FGV EPE 2024 Analista de Pesquisa Energética - Recursos Energéticos (Caderno Tipo 1). Reproduzida para fins de estudo.