Copiar lista em Python

Azaz Farooq 30 janeiro 2023
  1. Copiar lista em Python usando o método copy()
  2. Copiar lista em Python usando o método de fatiamento
  3. Copiar lista em Python usando a função list()
  4. Copiar lista em Python usando o método de compreensão de lista
  5. Copiar lista em Python usando o método copy.copy()
  6. Cópia profunda da lista Python vs. cópia superficial
Copiar lista em Python

Uma lista é um tipo de dados flexível disponível em Python e é colocada entre colchetes [] com valores separados por vírgula. Os valores na lista podem ser diferentes tipos de dados. A indexação de lista começa em 0 e pode ser concatenada e fatiada. Os valores de lista podem ser copiados como um novo valor de lista usando diferentes funções integradas.

Este artigo apresentará diferentes métodos para copiar uma lista em Python.

Copiar lista em Python usando o método copy()

A maneira mais direta de copiar uma lista Python é por meio do método copy(). Podemos encontrar um cenário onde queremos fazer uma cópia da lista. O sinal de igual = pode ser usado para construir uma duplicata de uma lista. A nova lista, no entanto, será vinculada à existente. Isso significa que a nova lista também será alterada se você atualizar a lista original. A nova lista se refere a um item semelhante à lista antiga.

Uma cópia de uma lista existente é gerada pelo método de lista copy(). O método copy() não aceita nenhum parâmetro.

Vamos dar um exemplo de nomes de frutas como uma lista Python. A nova lista irá copiar todos os nomes de frutas existentes na lista anterior. O código de exemplo é o seguinte.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring.copy()
print(fruits_summer)

Resultado:

['carrots', 'kiwi', 'grapes', 'cherry']

Copiar lista em Python usando o método de fatiamento

Em Python, fatiar é um método que usamos para extrair objetos de uma lista. Podemos recuperar objetos individuais, vários itens ou todos os itens contidos em uma lista usando o método de fatiamento.

Vamos usar o exemplo acima para ilustrar como podemos copiar uma lista usando o fatiamento.

O código de exemplo completo é fornecido abaixo.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring[:]
print(fruits_summer)

Resultado:

['carrots', 'kiwi', 'grapes', 'cherry']

Ele usa a forma de clonagem, dois pontos entre colchetes ([:]). Este processo gera uma réplica da lista antiga.

Copiar lista em Python usando a função list()

Também podemos construir uma cópia de uma lista em Python usando a função list(). A função list() tem um parâmetro: o objeto que você gostaria de converter em uma lista.

Vamos usar o exemplo de nossa barraca de frutas para demonstrar essa abordagem.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = list(fruits_spring)
print(fruits_summer)

Resultado:

['carrots', 'kiwi', 'grapes', 'cherry']

Copiar lista em Python usando o método de compreensão de lista

Esta abordagem usa compreensão de lista. Ele itera através de todos os elementos de lista existentes pelo loop for e adiciona os novos elementos de lista.

O código de exemplo completo é fornecido como:

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = [i for i in fruits_spring]
print(fruits_summer)

Resultado:

['carrots', 'kiwi', 'grapes', 'cherry']

Copiar lista em Python usando o método copy.copy()

Também podemos usar o método copy() no módulo copy para copiar uma lista Python.

O código de exemplo completo é fornecido como:

import copy

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]

fruits_summer = copy.copy(fruits_spring)

print(fruits_summer)

Resultado:

['carrots', 'kiwi', 'grapes', 'cherry']

Cópia profunda da lista Python vs. cópia superficial

Todos os métodos apresentados acima são cópias superficiais. A cópia superficial significa que se o elemento da lista for mutável e esse elemento for modificado na lista original, essa modificação também será refletida na lista copiada. A cópia superficial copia apenas o ponteiro ou a referência aos elementos da lista.

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = original_list.copy()

original_list[0][0] = "banana"
original_list[0][1] = "apple"
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Resultado:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['banana', 'apple'], 'kiwi', 'grapes', 'cherry']

O primeiro elemento da lista original também é uma lista, que é mutável. Quando mudamos seu conteúdo, o elemento correspondente na lista copiada é modificado. Enquanto isso, o segundo elemento da lista original é um objeto imutável, portanto, sua alteração não será refletida na lista copiada.

A cópia profunda, em contraste com a cópia superficial, copia os objetos da lista original recursivamente para a nova lista. Portanto, a modificação na lista original não será refletida na lista copiada. O método deepcopy() do módulo copy executa a operação de cópia profunda.

import copy

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = copy.deepcopy(original_list)

original_list[0] = ["banana", "apple"]
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Resultado:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']

Artigo relacionado - Python List