Beim Umgang mit bestimmten Typen wie list und dictionary beziehen sich Variablen im Gegensatz zu Wertentitäten auf Entitäten. Die Eigenschaften der Variablen können anhand der Ausführungsergebnisse der folgenden Programme bestätigt werden.
l1 = []
l1.append(0)
l2 = l1
l2.append(1)
print('l1 = ' ,l1)
print('l2 = ' ,l2)
Ausführungsergebnis
l1 = [0, 1] l2 = [0, 1]
Nachdem ich die Liste "l1" in die Liste "l2" eingesetzt hatte, fügte ich nur "l2" einen Wert hinzu, aber "l1" wurde ein ähnlicher Wert hinzugefügt. Dies liegt daran, dass die Referenzinformationen sowohl "l1" als auch "l2" enthalten und die Entitäten am Ziel der Referenz dasselbe gemeinsam haben.
Die Methode "copy ()" wird verwendet, um das Problem zu lösen, dass der Wert selbst nicht nur durch Zuweisen kopiert wird.
l1 = []
l1.append(0)
l3 = l1.copy()
l3.append(1)
print('l1 = ' ,l1)
print('l3 = ' ,l3)
Ausführungsergebnis
l1 = [0] l3 = [0, 1]
Selbst wenn die Methode "copy ()" verwendet wird und das Element der Liste eine Referenz ist, wird das Referenzziel nicht kopiert.
l4 = [[]]
l4[0].append(0)
l5 = l4.copy()
l5[0].append(1)
print('l4 = ' ,l4)
print('l5 = ' ,l5)
Ausführungsergebnis
l4 = [[0, 1]] l5 = [[0, 1]]
Wenn Sie alle Referenzziele der in der Liste enthaltenen Elemente kopieren möchten, verwenden Sie die im Paket "copy" enthaltene Methode "deepcopy ()".
import copy
l4 = [[]]
l4[0].append(0)
l6 = copy.deepcopy(l4)
l6[0].append(1)
print('l4 = ' ,l4)
print('l6 = ' ,l6)
Ausführungsergebnis
l4 = [[0]] l6 = [[0, 1]]
Recommended Posts