Dieser ist der Code:Python-Liste ist nicht der gleiche Bezug
L=[1,2]
L is L[:]
False
Warum ist das falsch?
Dieser ist der Code:Python-Liste ist nicht der gleiche Bezug
L=[1,2]
L is L[:]
False
Warum ist das falsch?
L[:]
(Slice-Notation) bedeutet: Erstellen Sie eine Kopie der gesamten Liste, Element für Element.
Sie haben also zwei Listen, die den gleichen Inhalt haben, aber separate Entitäten sind. Da is
Objektidentität auswertet, gibt es False
zurück.
L == L[:]
gibt True
zurück.
Im Zweifel für id
fragen;)
>>> li = [1,2,4]
>>> id(li)
18686240
>>> id(li[:])
18644144
>>>
Die getslice Methode der Liste, die aufgerufen wird, wenn Sie auf L [], um eine Liste zurückgibt; Wenn Sie es also mit dem Argument ':' aufrufen, verhält es sich nicht anders, es gibt eine neue Liste mit den gleichen Elementen wie das Original zurück.
>>> id(L)
>>> id(L[:])
>>> L[:] == L
True
>>> L[:] is L
False
die Sie interessieren, könnte es auch einsichtig sein: 'L [:] L [:]' – fortran
Reserve 'is' Tests zur Überprüfung gegen Keine oder andere Singletons (wie Klassen oder Module), sonst sind Sie am ehesten interessiert an '==' testing (und ja, ich weiß, '1 ist 1' gibt normalerweise True in der CPython-Welt, aber das macht es nicht eine gute Idee). – PaulMcG