Ich bin ein Netzwerk-Ingenieur, der versucht, Python-Programmierung als Job-Anforderung zu lernen.Python variable Zuweisung ändert Wert
Ich schrieb diesen Code unten an
# Funtion das erste und das letzte Element in der Liste zu hacken
def chop(t):
t.pop(0) and t.pop(len(t)-1)
return t
Wenn ich die Funktion auf der Liste t laufen und es zu einer Variablen zuweisen ein. a erhält den Rest der Liste, nachdem die Funktion ausgeführt wurde und eine neue Liste wird. Dies funktioniert perfekt.
>>> t = ['a', 'b', 'c', 'd', 'e' ,'f','g','h','i','j','k','l']
>>> a=chop(t)
>>> a
['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
>>>
Später, wenn ich versuche, es funktioniert gut, aber der Wert von a ändert sich auch mit dem Ausgang des Druck chop (t), während ich nicht die Variable a durch die Funktion chop (t) ausgeführt haben. Kann jemand erklären, warum das passiert?
>>> print chop(t)
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
>>> a
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Grüße Umesh
Sie kopieren Ihre Liste nicht, also beziehen sich 'a' und' t' auf dieselbe Liste. Wenn Sie einen ändern, werden beide verändert. – khelwood
Sie können diesen Artikel hilfreich finden: [Fakten und Mythen über Python Namen und Werte] (http://nedbatchelder.com/text/names.html), die von SO Veteran Ned Batchelder geschrieben wurde. Siehe auch [Andere Sprachen haben "Variablen", Python hat "Namen"] (http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables) für eine Kurze Zusammenfassung mit schönen Diagrammen. –
Sie sollten sich diese SO [Artikel] anschauen (http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list) – latsha