Questo è il codice:lista Python non è la stessa di riferimento
L=[1,2]
L is L[:]
False
Perché questo è falso?
Questo è il codice:lista Python non è la stessa di riferimento
L=[1,2]
L is L[:]
False
Perché questo è falso?
L[:]
(notazione di sezione) significa: eseguire una copia dell'intero elenco, elemento per elemento.
Quindi hai due elenchi che hanno contenuti identici, ma sono entità separate. Poiché is
valuta l'identità dell'oggetto, restituisce False
.
L == L[:]
restituisce True
.
In caso di dubbio chiedere id
;)
>>> li = [1,2,4]
>>> id(li)
18686240
>>> id(li[:])
18644144
>>>
Il getslice metodo di lista, che viene chiamata quando si a L [], restituisce una lista; così, quando lo chiami con l'argomento ':', non si comporta diversamente, restituisce una nuova lista con gli stessi elementi dell'originale.
>>> id(L)
>>> id(L[:])
>>> L[:] == L
True
>>> L[:] is L
False
Prova questo, potrebbe essere penetranti troppo: 'L [:] è L [:]' ' – fortran
Reserve is' test per la verifica nei confronti Nessuno o altri single (come le classi o moduli), in caso contrario, si è molto probabilmente interessato a '==' testing (e sì, so che '1 is 1' generalmente restituisce True nel mondo CPython, ma ciò non lo rende una buona idea). – PaulMcG