Copiar profundamente uma lista em Python

Samyak Jain 30 janeiro 2023
  1. Use a função copy.deepcopy() para copiar profundamente uma lista em Python
  2. Use a compreensão de lista para copiar profundamente uma lista em Python
Copiar profundamente uma lista em Python

Podemos criar cópias superficiais e profundas em Python. Uma cópia profunda de uma lista é criar uma nova lista e então inserir recursivamente nela as cópias dos elementos da lista original. Refere-se à clonagem de uma lista e quaisquer alterações feitas na lista original não afetam a lista clonada.

Use a função copy.deepcopy() para copiar profundamente uma lista em Python

A função deepcopy() do módulo copy é usada para criar uma cópia profunda da lista especificada. Se alterarmos esta cópia, o conteúdo da lista original permanece o mesmo e não é alterado.

Por exemplo,

import copy

A = [[10, 60], [50, "Hi"], ["Hello", 5, 80]]
B = copy.deepcopy(A)
A[2][0] = "World"
A[0][1] = 10
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Produção:

List A is : [[10, 10], [50, 'Hi'], ['World', 5, 80]]
List B is : [[10, 60], [50, 'Hi'], ['Hello', 5, 80]]

A lista B não é modificada depois que um novo valor é atribuído na lista A porque a lista B é uma cópia profunda da lista A. A lista A e a lista B são independentes uma da outra.

Use a compreensão de lista para copiar profundamente uma lista em Python

A compreensão de listas em Python é usada para criar novas listas a partir de outros iteráveis, como listas, tuplas, strings e muito mais. A compreensão da lista torna o código simples e eficiente.

Faremos essencialmente o que a função deepcopy() faz e criaremos recursivamente uma nova cópia da lista fornecida neste método.

Por exemplo,

A = [2, 4, 6, 8, 10]
B = [i for i in A]
A[0] = "Hi"
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Produção:

List A is : ['Hi', 4, 6, 8, 10]
List B is : [2, 4, 6, 8, 10]

Também podemos executar esse método sem compreensão de lista e usar o loop for de maneira tradicional. No entanto, leva mais linhas de código e mais tempo.

Artigo relacionado - Python List