was passiert b = a [:] (Warum funktioniert das nicht für Zahlen von -5 bis 256)?
Der Bereich von -5 bis 256 hat mit folgende zu tun:
Die aktuelle Implementierung behält ein Array von Integer-Objekten für alle Ganzzahlen zwischen -5 und 256 bei, wenn Sie eine
int
in diesem Bereich erstellen, erhalten Sie tatsächlich nur einen Verweis auf das vorhandene Objekt.
Um dies zu demonstrieren, beachten Sie, dass id(123)
immer den gleichen Wert zurückgibt, während id(9999)
verschiedene Werte zurückgeben kann:
Dies ist natürlich ein Artefakt der aktuellen Implementierung. Eine andere Python-Implementierung könnte dies möglicherweise nicht tun oder einen anderen Bereich verwenden.
Was Ihr letztes Beispiel betrifft:
%Vor% Wie Sie sehen können, kopiert [:]
einfach die Referenzen. Dies erklärt, warum a[i] is b[i]
auf True
für alle i
auswertet.
Hinzufügen zu @NPEs Antwort , hier ist eine schöne Illustration:
%Vor%druckt:
%Vor%Tags und Links python python-3.x python-2.7