Python Variablen Zuweisung in eine for-Schleife

Verstehe ich, dass in Python reguläre c++ - Stil-variable Zuordnung wird ersetzt durch Verweise auf Sachen ie

a=[1,2,3]
b=a
a.append(4)
print(b)       #gives [1,2,3,4]
print(a)       #gives [1,2,3,4]

aber ich bin immer noch verwirrt, warum eine analoge situation mit den grundlegenden Arten zB. Ganzzahlen funktioniert das anders?

a=1
b=a
a+=1
print(b)          # gives 1
print(a)          # gives 2

Aber warte, es wird noch verwirrender, wenn man bedenkt, Schleifen!

li=[1,2,3]
for x in li:
    x+=1
print(li)     #gives [1,2,3]

Das ist, was ich erwartet habe, aber was passiert, wenn wir tun:

a,b,c=1,2,3
li=[a,b,c]
for x in li:
    x+=1
print(li)        #gives [1,2,3]

Vielleicht ist meine Frage sollte sein, wie eine Schleife über eine Liste von Ganzzahlen und wechseln Sie Sie ohne Karte (), wie muss ich eine if-Anweisung drin. Das einzige, was ich kann kommen, kurz mit

for x in range(len(li)):
    Do stuff to li[x]

ist die Verpackung von den ganzen zahlen in einer Liste der Elemente. Aber es muss einen besseren Weg geben.

  • b=a ist eine Ressource-Referenz. Also es wird sich auf den gleichen Speicher, so bleibt es verbunden. Die for Schleife, die Sie tun, wird eine neue Instanz (x) und wird somit nicht auf die li es sei denn, Sie schreiben, die änderung zurück zu der Liste.
  • Vielleicht dieser link: stackoverflow.com/questions/4081217/... klären Sie aoome Dinge zu diesem Thema.
InformationsquelleAutor Michal | 2014-01-03
Schreibe einen Kommentar