Wie sich die Referenz des Python-Arrays ändert, hängt vom Vorhandensein oder Fehlen von Indizes ab

Dieses Mal ist es ein Experiment, einen genaueren Blick darauf zu werfen, worauf die Variablen hinweisen. Die Version von Python ist 3.4.3.

Ändern Sie ein Objekt aus einer anderen Variablen

Selbst wenn Sie den Inhalt einer Variablen einer anderen Variablen zuweisen, zeigt sie auf dasselbe Objekt. Überprüfen Sie dies, indem Sie die Objekt-IDs vergleichen.

mylist = [[0, "mike"], [1, "jane"]]
person1 = mylist[0]

print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[0, 'mike'], [1, 'jane']]
# person1 = [0, 'mike']

#Stellen Sie sicher, dass die beiden Variablen auf dasselbe Objekt zeigen
print("mylist[0] id = %s" % id(mylist[0]))
print("person1 id = %s" % id(person1))
print(id(mylist[0]) == id(person1))
# => True

#Speichern Sie die aktuelle Objekt-ID zur späteren Bestätigung
person1_id = id(person1)

Versuchen Sie, die Elemente des Arrays durch eine andere Variable zu ändern. Nur wenn ein Index angegeben ist

#Person ist meine Liste[0]Stellen Sie sicher, dass es sich um einen Alias für handelt
person1[0] = 100
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [100, 'mike']

Das Element wurde erfolgreich geändert. Wenn Sie jedoch keine Indizes verwenden, können Sie das Element nicht ändern, und ein neues Objekt wird zugewiesen.

#durch pesron1 mylist[1]Versuchen Sie, die Reihenfolge von zu ändern
person1 = [5, "michel"]
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [5, 'michel']

person1 = 5
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# => 
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = 5

Wenn Sie es mit der Objekt-ID vergleichen, als die Elemente des vorherigen Arrays enthalten waren, können Sie sehen, dass sich das Objekt sicherlich geändert hat.

#Vergleichen Sie mit der ID, bevor Sie das Objekt ändern
print(person1_id == id(person1))
# => False

Worauf die Variable zeigt

Lassen Sie uns das obige Phänomen veranschaulichen. Erstens werden Indizes verwendet. Beachten Sie, dass sich die Indizes nicht auf das Array (in diesem Fall Liste) beziehen, sondern auf seine Elemente. Da wir nur die Referenz (Pfeil) des Elements des Arrays geändert haben, bleiben die Variablen, die auf das Array verweisen, dieselben wie die Referenz auf das Array.

python_index_01_150702.jpg

Weiter ist der Fall ohne Indizes. Im vorherigen Experiment hatte das Ändern des Werts von einer anderen Variablen in diesem Fall keine Auswirkungen auf die ursprüngliche Variable. Dies liegt daran, dass ich den Verweis auf das Array in den Verweis auf das neue Objekt geändert habe.

python_index_02_150702.jpg

Recommended Posts

Wie sich die Referenz des Python-Arrays ändert, hängt vom Vorhandensein oder Fehlen von Indizes ab
rsync Das Verhalten ändert sich abhängig vom Vorhandensein oder Fehlen des Schrägstrichs der Kopierquelle
Ändern Sie in Python das Verhalten der Methode je nach Aufruf
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
So aktualisieren Sie die Python-Version von Cloud Shell in GCP
Der Vorgang des wiederholten Extrahierens eines Arrays unterscheidet sich je nach Sprache geringfügig ...
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
[Python numpy] Geben Sie den Index des Arrays dynamisch an
Ausgabe in Form eines Python-Arrays
Zum Zeitpunkt des Python-Updates mit Ubuntu
Einfache Möglichkeit, 0 abhängig von der Anzahl der Ziffern vorangestellt [Python]
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
So ermitteln Sie die Anzahl der Stellen in Python
Unterschied in den Ergebnissen abhängig vom Argument von multiprocess.Process
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Wie man Python auf Android genießt !! Programmieren für unterwegs !!
Wie viel kennen Sie die Grundlagen von Python?
Der Rückgabewert von len oder unichr kann sich ändern, je nachdem, ob es sich um UCS-2 oder UCS-4 handelt.
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
Bestätigt den Unterschied im Vorhandensein oder Fehlen einer zufälligen Verarbeitung während des Mini-Batch-Lernens mit Chainer
der Zen von Python
Stellen Sie die neueste Version von Python in Linux (Debian) von Chromebook
Unterschied in sys.path abhängig davon, wie Python gestartet wird (v3.8.2)
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
[Jinja2] Änderung des Zeilenumbruchs abhängig von der Position des Bindestrichs
So stellen Sie Pybot, das einfachste Python-Lehrbuch, auf Heroku bereit
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
[Python] Verwendung der for-Anweisung. Eine Methode zum Extrahieren durch Angabe eines Bereichs oder von Bedingungen.