Einfache Aufgabe mit range()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Schokiii1993
User
Beiträge: 5
Registriert: Donnerstag 25. Juni 2020, 11:25

Hallo zusammen,

ich bin ein Anfänger was Python betrifft und arbeite mich gerade in diverse Themen ein. Folgenden Code kann ich leider nicht ganz nachvollziehen und würde mich freuen, wenn mir jemand erklären kann, weshalb das Ergebnis das ist was es ist:

lst = [1, 2]
for v in range(2):
lst.insert(-1, lst[v])

Die Ausgabe lautet wie folgt:
[1, 1, 1, 2]

In die Liste werden also nacheinander die Elemente der Liste an der Stelle [v] eingefügt (und zwar an die Stelle -1). Soweit so gut. Irgendwie habe ich hierbei einen Denkfehler und kann nicht nachvollziehen, weshalb die Ausgabe dann nicht lautet [1, 1, 2, 2], da v in der Schleife ja die Werte 0 und 1 annimmt.

Wo liegt mein Denkfehler?

Ich bedanke mich und hoffe, die Frage ist nicht total blöd :cry: Wie gesagt, ich bin komplett neu in Python unterwegs.

Schokiii1993
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Schreib doch mal Schritt für Schritt auf, was dort in der Schleife passiert. Und behalte immer im Kopf, welche Elemente sich gerade in der Liste mit dem schlechten Namen "lst" befinden.

Hier passieren übrigens Dinge, die man in Python eigentlich nicht tut und die zu diesem Verhalten führen:
1. Man benutzt keine for-Schleife mit range um über ein iterierbares Objekt zu iterieren. Man iteriert direkt über das Objekt.
2. Man ändert in einer Schleife nicht das grundlegende Objekt über das (hier indirekt) iteriert wird.
Schokiii1993
User
Beiträge: 5
Registriert: Donnerstag 25. Juni 2020, 11:25

Ach bin ich ein .... :-) das ist ja ganz einfach. Bin einfach nicht drauf gekommen, aber dein erster Satz hat dann dazu geführt, dass es in meinem Kopf "klick" gemacht hat, vielen Dank!
Antworten