Introdução à programação e aos algoritmos
5.9 Listas Como Parâmetros
lista2[1] = 42
print(lista1)
print(lista2)
■ Programa 5.28: Lista com efeito colateral.
E o resultado:
[1, 42, 3]
[1, 42, 3]
Esse efeito colateral é muitas vezes indesejável. A lista lista2,
neste caso, é o que chamamos de aliás, ou apelido de lista1. Uma forma segura de criar uma lista com valores de outra é usar o fatiamento, neste caso falamos de “clonagem”. No exemplo a seguir, a lista2 é um clone da lista1. Qualquer operação sobre os elementos das listas não terá nenhum efeito colateral na outra lista:
lista1 = [1, 2, 3]
lista2 = lista1[:]
lista2[1] = 42
print(lista1)
print(lista2)
■ Programa 5.29: Lista fatiada sem efeito colateral.
E o resultado:
[1, 2, 3]
[1, 42, 3]
5.9 LISTAS COMO PARÂMETROS
Na discussão sobre passagem de parâmetros mencionei que Python tem uma forma peculiar de realizá-la. Vimos que quando é passado um inteiro como parâmetro, qualquer mudança que seja feita dentro da função chamada não afeta a variável que a chamou. Mas isso tem mais a ver com o fato de inteiros serem imutáveis. Veja o Programa 5.30.