Enviar um café pro programador

Mostrando postagens com marcador Referência. Mostrar todas as postagens
Mostrando postagens com marcador Referência. Mostrar todas as postagens

Como Copiar uma Lista em Python

Neste tutorial de nosso Curso de Python, vamos aprender a maneira errada e a correta de se copiar uma lista.

Referenciando Listas - Copiando do jeito Errado

Vamos criar  a list1:
list1 = [1, 2, 3, 4]

O que acontece por trás dos planos é que existe um bloco de memória no seu computador, com a lista [1, 2, 3, 4] armazenado lá. A varável list1 tem um endereço que aponta para esse bloco de memória.

Agora vamos criar outra lista, a list2.
Fazendo uma cópia direta: list2 = list1

Agora faça um teste, mude um valor da list1, por exemplo:
list1[0] = 0

Agora a list1 será [0,2,3,4].
Porém, se você der um print em list2 vai ver que ela também é [0, 2, 3, 4]

Curso de Python online de graça.


Mas peraí Python!
Eu queria mudar só a list1! E não a list2.
Por que isso ocorre?

Simples, ao fazermos list2=list1, faremos com que list2 também aponte para aquele endereço de memória.

Então, se alterar o valor naquele bloco de memória, essa mudança vai ser visível para todas as variáveis que apontem para ĺa!


Copiando do Jeito Certo e Difícil

Uma solução para copiar corretamente é copiar item por item:

list2 = []
for item in list1:
    list2.append(item)

Copiando do Jeito Certo e Fácil

Ou uma solução ainda mais elegante:

list2 = [] + list1

O que fizemos foi concatenar a lista list1 com outra lista (vazia), e o resultado é uma cópia de list1, mas agora list2 não aponta para o mesmo bloco de memória.

Bacana copiar dessa maneira, não é?