Este es el código:lista de Python no es la misma referencia
L=[1,2]
L is L[:]
False
Por qué esto es falso?
Este es el código:lista de Python no es la misma referencia
L=[1,2]
L is L[:]
False
Por qué esto es falso?
L[:]
(notación de división) significa: Haga una copia de la lista completa, elemento por elemento.
Así que tiene dos listas que tienen el mismo contenido, pero son entidades separadas. Como is
evalúa la identidad del objeto, devuelve False
.
L == L[:]
devuelve True
.
En caso de duda pregunte por id
;)
>>> li = [1,2,4]
>>> id(li)
18686240
>>> id(li[:])
18644144
>>>
El getslice método de la lista, que se llama cuando a L [], devuelve una lista; entonces, cuando lo llamas con el argumento ':', no se comporta de manera diferente, devuelve una nueva lista con los mismos elementos que el original.
>>> id(L)
>>> id(L[:])
>>> L[:] == L
True
>>> L[:] is L
False
Prueba esto, podría ser demasiado perspicaz: 'L [:] es L [:]' ' – fortran
Reserva is' prueba para comprobar contra Ninguno u otros embarazos únicos (como clases o módulos), de lo contrario, usted está lo más probable es que esté interesado en la prueba '==' (y sí, sé que '1 es 1' generalmente devuelve True en el mundo de CPython, pero eso no lo convierte en una buena idea). – PaulMcG