-1
Wenn ich [:] verwende, ist es eine Kopie von Werten und ohne es zu benutzen, nimmt es die Referenz und ändert den Wert?Was ist der Unterschied in einfachen arr1 = arr2 und arr1 = arr2 [:]?
Wenn ich [:] verwende, ist es eine Kopie von Werten und ohne es zu benutzen, nimmt es die Referenz und ändert den Wert?Was ist der Unterschied in einfachen arr1 = arr2 und arr1 = arr2 [:]?
Dies hängt entscheidend davon ab, ob das Objekt in Scheiben geschnitten wird. Häufig, [:]
gibt Ihnen eine flache Kopie:
a = [1, 2, 3]
b = a[:]
# `b` is distinct from `a`, but `b` references the same objects that `a` does.
print(b is a) # False
print(all(x is y for x, y in zip(a, b)) # True
aber es ist einfach ein pathologisches Objekt zu schreiben, die nur das Objekt zurückgibt selbst:
class SliceMe(object):
def __getitem__(self, obj):
return self
@ TigerhawkT3 - ich denke, das ist wahrscheinlich ein besseres dupe seit OP's Frage ist nicht unbedingt listenspezifisch: http://stackoverflow.com/q/6167238/748858 – mgilson
@mgilson - \ * shrug \ * Sicher, scheint mir gut. Fühlen Sie sich frei zu öffnen und wieder zu schließen, wenn Sie möchten. – TigerhawkT3