Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 68 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

5.8 Clonando Listas

EXERCÍCIO 5.25

 

Escreva um programa que crie uma lista com todos os números entre 100 e 1000

que são divisíveis por 7 mas não são múltiplos de 3.

 

EXERCÍCIO 5.26

 

Escreva um programa que crie uma lista com números digitados pelo usuário e

forneça como saída a média desses números.

 

5.8 CLONANDO LISTAS

Quando você cria uma lista, seu identificador é uma referência para uma área da memória do computador. No jargão da Computação, chamamos essa área de “objeto”. Assim, podemos dizer que um identificador é uma referência a um objeto em memória. Voltando às listas, mesmo que duas listas tenham os mesmos valores para seus itens, se cada uma tiver sido criada separadamente, cada uma apontará para seus próprios objetos.

lista1 = [1, 2, 3]

lista2 = [1, 2, 3]

A Figura 5.8 representa como cada lista assim criada tem seus

próprios dados e sua própria área de memória.

 

Figura 5.8 Duas listas independentes.

Se você modifica uma lista, a outra não é modificada, como seria de se esperar. Veja o Programa 5.27.

lista1 = [1, 2, 3]

lista2 = [1, 2, 3]

lista2[1] = 42

print(lista1)

print(lista2)

 

■ Programa 5.27: Lista sem efeito colateral.

 

O resultado, como esperado, é:

[1, 2, 3]

[1, 42, 3]

Outra situação surge se você tentar criar uma lista a partir de uma já existente. Neste caso, não existe uma cópia dos elementos, mas simplesmente uma referência ao mesmo objeto na memória:

lista1 = [1,2,3]

lista2 = lista1

 

Figura 5.9 Duas listas que apontam para a mesma área de

memória.

 

Se você fizer uma atribuição a um elemento de lista1, irá modificar a lista2 também.

lista1 = [1, 2, 3]

lista2 = lista1