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ștecopy.deepcopy().
Comenzi înrudite
list (liste): Lista este o colecție ordonată și modificabilă de elemente, scrisă între paranteze drepte.is / is not: Verifică dacă două nume arată spre exact același obiect din memorie.clear() pentru liste, dicționare și mulțimi: Golește o listă, un dicționar sau o mulțime, păstrând același obiect.dict (dicționare): Dicționarul păstrează perechi cheie: valoare și găsește rapid valoarea după cheie.