zu Modifizieren Bitte werfen Sie einen Blick auf dem folgenden Code:Wie neu zuweisen (oder modifizieren), um einen Python-Variable mit einer anderen Variable definiert, ohne beide
import numpy as np
list1 = [1,2,3]
list2 = list1
list2.append(4)
print list2
print list1
Das Ergebnis ist [1,2,3,4] für beide Drucke. Ich erwartete [1,2,3,4] für list2 und [1,2,3] für list1, da ich nur '4' an list2 angehängt habe. Es sieht so aus, als ob die Zuweisung list2 = list1 die Anweisung in list2 an list1 übergeben hat.
Zuerst möchte ich verstehen, warum das ist und zweitens, gibt es eine Möglichkeit, eine Variable B, die identisch ist mit der Variablen A, aber so dass jede Anweisung auf B (eine Neuzuweisung zum Beispiel) zu machen, wird B ändern, aber nicht A?
Offensichtlich konnte ich
list1 = [1,2,3]
list2 = [1,2,3]
list2.append(4)
tun und bekommen, was ich will. Aber was, wenn list1 heißt, ein (numpy) 100x100 Array? Dann hätte ich lieber eine Möglichkeit, um list1 in eine andere Variable zu kopieren, als sie manuell neu zu schreiben.
Ich bin kein erfahrener Programmierer und bin ziemlich neu in Python. Ich habe auch versucht, diese Frage so einfach wie möglich zu formulieren und habe nichts gefunden, was direkt auf dieser Seite beantwortet wurde. Bitte leite mich zu allem, was ich vermisst habe, und akzeptiere meine Entschuldigung im Voraus. Vielen Dank!
Beachten Sie, dass Sie einfache Python-Listen präsentieren, aber sprechen Sie über numpy. Verschiedene Bestien: https://stackoverflow.com/questions/3059395/numpy-array-assignment-problem –
Sie haben Ihre eigene Frage beantwortet. In Python kopiert die Zuweisung * niemals *. Wenn Sie eine Kopie möchten, müssen Sie explizit eine Kopie erstellen *. 'numpy' Arrays stellen eine' .copy' Methode zur Verfügung, die Sie verwenden können. Sie sollten sich wahrscheinlich Ned Batchelders [Fakten und Mythen über Python-Namen und Werte] (https://nedbatchelder.com/text/names.html) ansehen. –
Danke, sehr nützliche Informationen! – orion2112