Mais
Como clonar ou copiar uma lista?
Quais são as opções para clonar ou copiar uma lista em Python?
Enquanto utiliza new_list = my_list
, qualquer modificação em new_list
muda my_list
todas as vezes.
Porque é que isto acontece?
2262
3
Com
new_list = my_list
, você na verdade não tem duas listas. A atribuição apenas copia a referência para a lista, não a lista real, então ambasnew_list' e
my_list' referem-se à mesma lista após a atribuição.Para realmente copiar a lista, você tem várias possibilidades:
Você pode utilizar o método builtin
list.copy()
(disponível desde Python 3.3):Podes cortá-la:
A opinião de Alex Martelli (pelo menos [em 2007][2]) sobre isto é, que é uma sintaxe estranha e não faz sentido usá-la nunca. ;) (Na opinião dele, a próxima é mais legível).
Você pode utilizar a função embutida
list()
:Você pode utilizar genérico
copy.copy()
:Isto é um pouco mais lento do que
list()
porque tem de descobrir primeiro o tipo de dados daold_list
.Se a lista contém objetos e você deseja copiá-los também, utilize o genérico
copy.deepcopy()
:Obviamente o método mais lento e mais necessário para a memorização, mas por vezes inevitável.
Exemplo:
Resultado:
Utilize
thing[:]
O idioma de Python para fazer isto é
newList = oldList[:]