copy() pentru liste, dicționare și mulțimi în Python

Metode pentru liste Python 3.0+ (list.copy: 3.3+)

Creează o copie superficială (shallow) a unei liste, a unui dicționar sau a unei mulțimi.

Sintaxă
copie = lista.copy()
copie = dictionar.copy()
copie = multime.copy()

Ce face copy() pentru liste, dicționare și mulțimi

b = a nu copiază nimic: ambele nume arată spre același obiect. a.copy() creează o colecție nouă, cu aceleași elemente, pe care o poți modifica fără să afectezi originalul. Pentru liste, a[:] și list(a) fac același lucru.

Copia este superficială: elementele însele nu sunt copiate. Dacă lista conține alte liste sau dicționare, ele sunt împărțite între original și copie. Pentru o copie completă, pe toate nivelurile, folosește copy.deepcopy().

Ce returnează

O colecție nouă, de același tip.

Exemple

Exemplul 1: Copie față de atribuire

original = [1, 2, 3]
alias = original
copie = original.copy()
copie.append(4)
alias.append(99)
print(original, copie)

setari = {"tema": "luminoasă"}
noi = setari.copy()
noi["tema"] = "întunecată"
print(setari, noi)

Rezultat

[1, 2, 3, 99] [1, 2, 3, 4]
{'tema': 'luminoasă'} {'tema': 'întunecată'}

Exemplul 2: Copie superficială și deepcopy

import copy
clase = [["Ana", "Dan"], ["Ioana"]]
superficial = clase.copy()
complet = copy.deepcopy(clase)
clase[0].append("Mihai")
print(superficial)
print(complet)

Rezultat

[['Ana', 'Dan', 'Mihai'], ['Ioana']]
[['Ana', 'Dan'], ['Ioana']]

Greșeli frecvente

  • Copiezi o listă de liste cu copy() și te miri că modificarea unei liste interioare apare în ambele. Folosește copy.deepcopy().

Comenzi înrudite