2016-10-26 1 views
-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 [:]?

+0

@ TigerhawkT3 - ich denke, das ist wahrscheinlich ein besseres dupe seit OP's Frage ist nicht unbedingt listenspezifisch: http://stackoverflow.com/q/6167238/748858 – mgilson

+0

@mgilson - \ * shrug \ * Sicher, scheint mir gut. Fühlen Sie sich frei zu öffnen und wieder zu schließen, wenn Sie möchten. – TigerhawkT3

Antwort

-1

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 
Verwandte Themen