Entendendo a cópia superficial nos dicionários de Python: por que as atualizações na cópia não afetam os originais
Ao trabalhar com dicionários de Python, é importante entender a distinção entre coping e profundo coping. Uma cópia rasa cria um novo dicionário que contém referências aos mesmos objetos que o dicionário original, enquanto uma cópia profunda cria um novo dicionário com cópias dos objetos. Isso significa que o novo dicionário conterá referências aos mesmos objetos armazenados no dicionário original. Como resultado, quaisquer alterações feitas na cópia também serão refletidas no dicionário original. new = original.copy () new.update ({'c': 3}) print (original) # {'a': 1, 'b': 2} Print (novo) # {'A': 1, 'C': 3, 'B': 2}
Neste exemplo, o método dict.copy () cria um novo dicionário, novo, que contém referências aos mesmos objetos que o dicionário original. Quando atualizamos a cópia com {'c': 3}, o original e a cópia refletem essa alteração. Quando atualizamos a cópia, não estamos alterando os objetos reais, mas apenas as referências. Quando atualizamos a cópia de uma lista, estamos atualizando os elementos da lista, que afetam a cópia e o original. Esta função copia recursivamente todos os objetos no dicionário, criando uma nova estrutura com referências distintas. original = {'a': 1, 'b': 2} new = copy.deepcopy (original) new.update ({'c': 3}) print (original) # {'a': 1, 'b': 2} Print (novo) # {'A': 1, 'C': 3, 'B': 2} Neste exemplo, a função copy.deepcopy () cria um novo dicionário, novo, que contém cópias dos objetos no dicionário original. Quando atualizamos a cópia, o dicionário original permanece inalterado.
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