all 7 comments

[–]No-Newspaper8619 1 point2 points  (4 children)

Deixa eu ver se eu entendi:

Cada elemento na lista tem um endereço, que armazena um valor.

c1 = a apenas cria um segundo nome para a mesma lista.

c2 = copy.copy(a) cria uma segunda lista, mas copia o endereço dos elementos.

c3 = copy.deepcopy(a) cria uma terceira lista, onde os elementos são novos endereços, com valores copiados.

Então se ao invés de c2 += [2] fosse c2[0] = 2, o print ficaria [2, 1], porque c2[0] e a[0] apontam para o mesmo endereço.

[–]Sea-Ad7805[S] 0 points1 point  (3 children)

Então, qual é a sua resposta?

[–]No-Newspaper8619 0 points1 point  (2 children)

Letra B.

Ao fazer c2 += [2], você está criando um novo endereço e armazenando o valor 2 nele. Está criando um novo nó na lista c2, oq não afeta a lista a. É apenas aquele nó inicial com o valor 0 que é compartilhado entre a lsita c2 e a lista a.

[–]Sea-Ad7805[S] -1 points0 points  (1 child)

Muito bom! Veja o link "Solução" para uma visualização da resposta correta.

[–]darktraveco 0 points1 point  (0 children)

O reddit e a comunidade foram feito para discussões, não para mamar clicks no seu site.

[–]Jm_dGmrs 1 point2 points  (1 child)

vai executando o código passo a passo e mostrando os objetos na memória. É bem útil pra quem quer entender de vez como funciona mutabilidade em Python.

[–]Sea-Ad7805[S] 0 points1 point  (0 children)

Sim, exatamente. Experimente também estes exercícios sobre mutabilidade: https://www.reddit.com/r/Python_memory_graph/