Médio Python

Ordenação e cópia

Enunciado

Dada a lista valores = [5, 2, 9, 1, 7], crie uma cópia chamada copia usando copy(). Ordene copia com sort() e imprima tanto a lista original quanto a cópia ordenada. Em seguida, use sorted() na lista original e imprima o resultado.

Requisitos

  • Usar copy() para criar a cópia.
  • Usar sort() na cópia para ordená-la.
  • Usar sorted() na lista original e imprimir o resultado.
  • A lista original deve permanecer inalterada.

Código inicial

valores = [5, 2, 9, 1, 7]
# Seu código aqui

Saída esperada

Original: [5, 2, 9, 1, 7]
Cópia ordenada: [1, 2, 5, 7, 9]
Sorted na original: [1, 2, 5, 7, 9]
Ver dica

copy() cria uma nova lista independente. sort() modifica a lista, sorted() retorna uma nova.

Mostrar solução
valores = [5, 2, 9, 1, 7]
copia = valores.copy()      # cópia rasa
copia.sort()                # ordena a cópia no local
print("Original:", valores)
print("Cópia ordenada:", copia)
print("Sorted na original:", sorted(valores))

Passo a passo

  1. Criamos valores com cinco números.
  2. valores.copy() cria uma nova lista com os mesmos elementos.
  3. copia.sort() ordena a cópia em ordem crescente, modificando-a.
  4. Imprimimos a lista original, que permanece [5, 2, 9, 1, 7].
  5. Imprimimos a cópia ordenada.
  6. sorted(valores) retorna uma nova lista ordenada sem alterar valores.

Por que funciona

copy() evita que as duas variáveis apontem para o mesmo objeto. sort() é um método que altera a lista no local e retorna None; sorted() é uma função que cria uma nova lista.

Erros comuns

  • Fazer copia = valores e depois copia.sort(): isso modificaria a lista original também, pois ambas referenciam o mesmo objeto.
  • Tentar usar print(valores.sort()): como sort() retorna None, a saída seria None.

Outra forma de resolver

Poderia usar copia = valores[:] para criar a cópia, que é equivalente a copy().

Saída esperada

Original: [5, 2, 9, 1, 7]
Cópia ordenada: [1, 2, 5, 7, 9]
Sorted na original: [1, 2, 5, 7, 9]