Это - код:
L=[1,2]
L is L[:]
False
Почему это - Ложь?
L [:]
(нотация среза) означает: Создание копии всего списка элемент за элементом.
Итак, у вас есть два списка с одинаковым содержанием, но разные объекты. Поскольку is
оценивает идентичность объекта, он возвращает False
.
L == L [:]
возвращает True
.
В случае сомнений спрашивайте id
;)
>>> li = [1,2,4]
>>> id(li)
18686240
>>> id(li[:])
18644144
>>>
Метод списка getslice , который вызывается при переходе к L [], возвращает список; поэтому, когда вы вызываете его с аргументом ':', он не ведет себя иначе, он возвращает новый список с теми же элементами, что и исходный.
>>> id(L)
>>> id(L[:])
>>> L[:] == L
True
>>> L[:] is L
False