Alternativas A e D
O código apresentado utiliza a linguagem de programação Python. Para entender as afirmações corretas, é fundamental compreender como a linguagem lida com variáveis e objetos mutáveis, como listas.
Análise do Código
O trecho de código executa duas operações principais:
nums = [1, 2, 3]: Cria um objeto lista na memória e cria uma referência (nome) chamada nums apontando para ele.vals = nums: Cria uma nova referência chamada vals apontando para o mesmo objeto que nums.
Em Python, quando você atribui uma variável a outra sem criar uma cópia explícita (como usar .copy() ou fatiamento [:]), apenas o endereço de memória é compartilhado.
Justificativa Detalhada
Vamos analisar cada opção baseada no comportamento de ponteiros em Python:
- Opção A (Correta): "
nums e vals são nomes diferentes da mesma lista" - Ao executar
vals = nums, não foi criada uma nova lista. O nome vals agora funciona como um apelido para o objeto já existente. Modificar uma lista afeta ambas as variáveis porque elas acessam o mesmo local na memória. - Analogia: Imagine dois etiquetas coladas na mesma caixa. Se você ler o conteúdo da caixa usando uma etiqueta, verá o mesmo que vê com a outra.
- Opção B (Incorreta): "
nums e vals são listas diferentes" - Isso seria verdade se houvesse uma cópia profunda. Como há apenas uma atribuição direta, existe apenas um objeto de lista na memória.
- Opção C (Incorreta): "
vals é maior que nums" - Essa comparação não faz sentido lógico neste contexto. Elas representam o mesmo objeto, portanto, nenhuma é "maior" que a outra.
- Opção D (Correta): "
nums tem o mesmo comprimento que vals" - Como
nums e vals referenciam o mesmo objeto, todas as propriedades desse objeto são compartilhadas. - O comprimento (tamanho) é calculado pelo número de elementos. Como é a mesma lista, o tamanho é idêntico (neste caso, $3$).
- \text{len(nums)} == \text{len(vals)}
Resumo Comparativo
| Característica | Situação Real | Explicação |
|---|
| Identidade do Objeto | Igual | Ambas apontam para o mesmo endereço de memória (id(nums) == id(vals)). |
| Conteúdo | Idêntico | Alterar nums[0] altera vals[0]. |
| Tamanho (Comprimento) | Igual | Ambos têm 3 elementos. |
Conclusão: As duas afirmações verdadeiras são que elas são nomes diferentes da mesma lista e possuem o mesmo comprimento.