copiar para Python (cópia profunda e cópia superficial)

| | | |

Às vezes, é necessária uma cópia para que você possa alterar uma cópia sem alterar a outra. Python tem duas maneiras de fazer cópias:

  • Deep copy
  • Shallow copy

Para fazer essas cópias, usamos copie o módulo . Usamos o módulo copy para operações de cópia superficial e profunda. Por exemplo


# import copy module

import copiar


# inicializar lista 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# use copy para cópia superficial

li2 = co py.copy ( li1)


# usando Deepcopy para Deepcopy

li3 = copy.deepcopy (li1)

No código acima, copy() retorna uma cópia superficial da lista e deepcopy() retorna uma cópia profunda da lista.

deepcopy

Deep Copy — é um processo em que o processo de cópia ocorre de forma recursiva. Isso significa primeiro criar um novo objeto de coleção e depois preenchê-lo recursivamente com cópias dos objetos filho encontrados no original. No caso de uma cópia profunda, uma cópia de um objeto é copiada para outro objeto. Isso significa que quaisquer alterações feitas na cópia do objeto não são refletidas no objeto original. Em python isso é feito usando a função deepcopy() .


# Código Python para demonstrar operações de cópia


code>


# import & quot; copie " para operações de cópia

importar copiar


# inicializando a lista 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# usando Deepcopy para deep copy

li2 = copy.deepcopy (li1)


# itens da lista original

print ( "Os elementos originais antes da cópia profunda" )

for i em range ( 0 , len (li1)):

print (li1 [i], end = " " )

print ( " " )


# adicionar um item à nova lista

li2 [ 2 ] [ 0 ] = 7


# A alteração é refletida em l2

print ( "A nova lista de elementos após a cópia profunda " )

para i em intervalo ( 0 , len (li1)):

print (li2 [i], end = "" )


imprimir ( "" )


# A mudança é NÃO refletido na lista original
# como uma cópia profunda

print ( "Os elementos originais após a cópia profunda" )

para i em intervalo ( 0 , len (li1)):

print (li1 [i], end = "" )

Sair:

O elemento original s antes da cópia profunda 1 2 [3, 5] 4 A nova lista de elementos após a cópia profunda 1 2 [7, 5] 4 Os elementos originais após a cópia profunda 1 2 [3, 5] 4 

Em No exemplo acima, uma alteração feita na lista não afetou outras listas, indicando uma lista de cópia profunda.

Cópia superficial

Cópia rasa significa criar um novo objeto de coleção e preenchê-lo com referências a objetos filho encontrados no original. O processo de cópia não se repete e, portanto, não cria cópias dos próprios objetos filho. No caso de uma cópia superficial, uma referência a um objeto é copiada para outro objeto. Isso significa que quaisquer alterações feitas na cópia do objeto são refletidas no objeto original. Python faz isso com a função "copy() ".


# código Python para demonstrar operações de cópia


# importação & quot; copie " para operações de cópia

importar copiar


# inicializando a lista 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# use cópia para cópia superficial

li2 = copy.copy (li1)


# itens da lista original

print ( " Os elementos originais antes da cópia superficial " )

para i em intervalo ( 0 , len (li1)):

print (li1 [i], end = "" )


print ( "" )


# adiciona um item à nova lista

li2 [ 2 ] [ 0 ] = 7


# verifica se a alteração é refletida

print ( "Os elementos originais após a cópia superficial" )

for i em intervalo ( 0 , len (li1 )):

print (li1 [i], end = " " )

Sair:

Os elementos originais antes da cópia superficial 1 2 [3, 5] 4 Os elementos originais após a cópia superficial 1 2 [7, 5] 4 

No exemplo acima, a alteração feita na lista é > entrou em vigor em outra lista, indicando que a lista foi copiada.

Pontos importantes:
A diferença entre cópias superficiais e profundas só se aplica a objetos compostos (objetos que contêm outros objetos, como listas ou instâncias de classe):

  • A cópia superficial cria um novo objeto composto e então (na medida do possível) insere referências aos objetos encontrados no original.
  • Uma cópia profunda cria um novo objeto composto e, em seguida, insere recursivamente cópias dos objetos encontrados no original nele.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method