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!
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.
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.
Para copiar uma lista de modo que ela seja independente da original, você tem várias opções:
list.copy()No Python 3.3 e posteriores, você pode usar o método list.copy():
nova_lista = minha_lista.copy()Fatiamento de lista é uma maneira comum e legível de copiar uma lista:
nova_lista = minha_lista[:]list()Outro método direto é usar o construtor list():
nova_lista = list(minha_lista)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.
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.
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.
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.
Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!
Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!
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!
Estudo aprofundado do potencial de LLMs multimodais: soluções, mecanismos e geração de valor Os Modelos de Linguagem de Grande Porte (LLMs) multimodais representam uma…
Quando se trata de visualização de dados em Python, o Matplotlib é uma das bibliotecas mais populares e poderosas disponíveis. Para cientistas de dados,…
Ter um portfólio online é essencial para se destacar no mercado. Se você atua na área de dados, tecnologia ou negócios, apresentar seus projetos…
Comente e participe da conversa
Crie sua conta gratuita e compartilhe sua opinião nos comentários.
Entre para a Asimov