"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que atribuir uma lista a uma nova variável em Python não cria uma cópia separada?

Por que atribuir uma lista a uma nova variável em Python não cria uma cópia separada?

Publicado em 2024-11-10
Navegar:411

Why does assigning a list to a new variable in Python not create a separate copy?

Mutação inesperada da lista

Ao criar uma lista como v = [0,0,0,0,0,0,0,0 ,0], você pode assumir que atribuir uma nova lista a uma variável cria uma referência separada. No entanto, códigos como o seguinte podem demonstrar um comportamento inesperado:

vec = v
vec[5] = 5

Ambos vec e v agora contêm o valor 5 no índice 5. Por que isso acontece?

Atribuição de referência

Em Python, listas são objetos mutáveis. Atribuir vec = v não cria uma nova cópia da lista. Em vez disso, ele atribui uma referência a v. Ambos vec e v apontam para o mesmo objeto de lista subjacente na memória.

Qualquer modificação feita em vec ou v afetará a lista original porque são a mesma lista. É por isso que quando vec[5] é alterado, v também muda.

Solução

Para criar uma cópia separada da lista, use a função list():

vec = list(v)

Isso cria um novo objeto de lista que contém uma cópia dos elementos de v. Quaisquer alterações feitas em vec não afetarão v e vice-versa .

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3