Kopieren Sie Liste a nach Liste b, so wie Sie einen Wert kopieren würden Angenommen, Sie ändern nur das mittlere Element der Liste. B.
copy_test.py
a = [1, 2, 3, 4, 5]
b = a
b[2] =5
print(a)
print(b)
Aus irgendeinem Grund ändert sich auch das Element in der Mitte der Liste a.
Ausgabe
[1, 2, 5, 4, 5]
[1, 2, 5, 4, 5]
Mit dem Kopiermodul sind Liste a und Liste b nicht mehr verknüpft.
copy_test2.py
import copy
a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
b[2] =5
print(a)
print(b)
Wenn Sie ein [:] schreiben, wird alles im Element an Liste b übergeben.
copy_test3.py
a = [1, 2, 3, 4, 5]
b = a[:]
b[2] =5
print(a)
print(b)
<2019/12/22: Von Shiracamus> copy.deepcopy erstellt eine vollständige Kopie, copy.copy und Slice-Kopien sind jedoch flache Kopien. Der Effekt bleibt bei mehreren Listen bestehen. → Lösung 2 scheint bei mehreren Listen nicht zu funktionieren.
copy_test4.py
a = [[1], [2], [3], [4], [5]]
b = a[:]
b[2][0] = 5
print(a)
print(b)
Wie Sie bereits betont haben, verknüpfen mehrere Listen die Ergebnisse.
Ausgabe
[[1], [2], [5], [4], [5]]
[[1], [2], [5], [4], [5]]
Wie erwartet hat sich nur das mittlere Element von Liste b geändert. Es scheint sicherer zu sein, Lösung 1 zu verwenden, da Lösung 2 das Problem hat, dass sie nicht mit mehreren Listen verwendet werden kann.
Ausgabe
[1, 2, 3, 4, 5]
[1, 2, 5, 4, 5]
Recommended Posts