2016-11-10 2 views
0

Es gibt etwas über die Art, wie Python einer Variablen, die ich nicht vollständig verstehe, einen Wert zuweist. Warum ist es, dass diese:Verwirrt, wie der Zuweisungsoperator funktioniert

charlie = ['d', 'o', 'p', 'e'] 
beth = charlie 
beth[0] = charlie[1] 
print charlie 

gibt mir diese:

['o', 'o', 'p', 'e'] 

Soweit ich den Zuweisungsoperator verstehe nur eine Art und Weise funktioniert, so sollte dieser Code nur den ersten Index von beth ändern, nicht Charlie. Also was gibt es?

+0

Das sieht gut aus mir, was sind Ihre Erwartungen? –

+2

Dies sollte helfen, die Verwirrung zu klären: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables – brianpck

+3

Lesen Sie auch [dieser Abschnitt] (http: //www.nedbatchelder.com/text/names.htm#h_assignment) von Ned Batchelders Fakten und Mythen über Python-Namen und Werte. Du kannst das Ganze auch wirklich lesen. –

Antwort

1

Wenn Sie beth = charlie sagen, ist beth jetzt ein Alias ​​von charlie. Das bedeutet, dass alles, was mit beth geschieht, nun mit charlie passiert.

http://gestaltrevision.be/wiki/python/aliases

Damit dies nicht geschieht, Sie beth = list(charlie) oder beth = charlie[:] versuchen.

+0

Wenn Sie möchten, dass es sich bei beth um eine neue Liste handelt, können Sie beth = list (charlie) verwenden, diese Objekte werden nun verschiedene sein. – chatton

+1

oder 'beth = charlie [:]' – rassar

0

Sie haben zwei Variablen dieselbe Liste zugewiesen, daher sind charlie und beth dasselbe Objekt.

Verwandte Themen