Tutoriais

Como Copiar uma Lista em Python

Ana Maria Gomes 28 fev Intermediário 5xp
Compartilhar

Ao trabalhar com listas em Python, você pode ter se deparado com uma situação em que atribui uma lista a outra, apenas para descobrir que mudanças na nova lista também afetam a lista original. Isso acontece porque a simples atribuição nova_lista = minha_lista não cria uma cópia da lista; ela apenas cria uma nova referência para a mesma lista. Para evitar isso, vamos mostrar como copiar uma lista corretamente em Python.

Entendendo Atribuição de Lista e Clonagem

Quando você usa o operador de atribuição (=) com listas, você não está criando uma nova lista independente. Em vez disso, você está criando uma segunda referência para a mesma lista na memória. Isso significa que quaisquer modificações em nova_lista serão refletidas em minha_lista e vice-versa.

Métodos para Copiar uma Lista em Python

Para copiar uma lista de modo que ela seja independente da original, você tem várias opções:

Usando list.copy()

No Python 3.3 e posteriores, você pode usar o método list.copy():

nova_lista = minha_lista.copy()

Usando Fatiamento de Lista

Fatiamento de lista é uma maneira comum e legível de copiar uma lista:

nova_lista = minha_lista[:]

Usando o Construtor list()

Outro método direto é usar o construtor list():

nova_lista = list(minha_lista)

Usando copy.copy()

Para uma solução mais genérica, você pode usar a função copy() do módulo copy:

import copy
nova_lista = copy.copy(minha_lista)

Este método é um pouco mais lento porque precisa determinar o tipo de dado de minha_lista primeiro.

Usando copy.deepcopy()

Se sua lista contém outros objetos mutáveis como listas, dicionários ou instâncias de classes, e você quer copiar esses também, use copy.deepcopy():

import copy
nova_lista = copy.deepcopy(minha_lista)

Este método é o mais lento e o que mais consome memória porque copia todos os objetos de forma recursiva.

Comparação de Desempenho

Aqui está um resumo rápido do desempenho de cada método:

  • copy.deepcopy(minha_lista): O mais lento, mas copia tudo de forma recursiva.
  • copy.copy(minha_lista): Mais rápido que deepcopy, mas não lida com objetos mutáveis aninhados.
  • list(minha_lista): Mais rápido que copy.copy().
  • nova_lista = []; nova_lista.extend(minha_lista): Ainda mais rápido.
  • minha_lista[:]: O método mais rápido para copiar uma lista.

No entanto, lembre-se de que copy.copy(), list[:] e list(list) não copiam listas aninhadas, dicionários e instâncias de classes dentro da lista. Se os originais mudarem, eles também mudarão na lista copiada.

Resumo

Para copiar uma lista em Python e garantir que ela não mude inesperadamente após a atribuição, você pode usar métodos como list.copy(), fatiamento de lista, o construtor list(), copy.copy() ou copy.deepcopy(). A escolha do método depende de se você precisa copiar objetos mutáveis aninhados e das considerações de desempenho para o seu caso específico. Lembre-se, a atribuição direta apenas cria uma referência para a mesma lista, não uma cópia independente.

Cursos gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Python para iniciantes: do zero ao primeiro projeto

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Python para dados: do zero à análise completa

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Analista de Dados
Curso
Grátis · 4h 11min

Python para IA: do zero ao primeiro chatbot

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov