>>> list1 = [1,2,3,4,5]
>>> list2 = list1
Per ottenere una migliore comprensione, vediamo con l'aiuto di immagini ciò che accade internamente.
>>> list1 = [1,2,3,4,5]
Questo crea un oggetto di lista e lo assegna a list1
.
>>> list2 = list1
L'oggetto lista che list1
si riferiva è assegnato anche list2
.
Ora, vediamo i metodi per svuotare un elenco e ciò che effettivamente accade internamente.
METODO-1: Impostare lista vuota []:
>>> list1 = []
>>> list2
[1,2,3,4,5]
Questo non elimina gli elementi della lista, ma elimina il riferimento alla lista. Quindi, list1
ora punta a una lista vuota ma tutti gli altri riferimenti avranno accesso a quel vecchio list1
.
Questo metodo crea solo un nuovo oggetto elenco e lo assegna a list1
. Rimarranno altri riferimenti.
METODO-2: Cancella utilizzando operatore porzione [:]:
>>> del list1[:]
>>> list2
[]
Quando usiamo l'operatore porzione di eliminare tutti gli elementi della lista, allora tutti i luoghi in cui è referenziato, diventa una lista vuota. Quindi list2
diventa anche una lista vuota.
fonte
2015-05-31 18:49:29
proprio come un chiarimento, 'del' in python è in realtà uno _statement_, non un _function_. – mintchkin
In Python 3, * per favore * usare 'a.clear()'. I documenti affermano che è equivalente a 'del a [:]' e * way * più leggibile. –
E naturalmente anche 'a [:] = []' che più o meno fa lo stesso di 'del a [:]' – driax