+1 Daumen
3,3k Aufrufe

Ich übe gerade etwas Python bzw. stehe mit folgender Aufgabe vor einem Problem.

Ich soll innerhalb einer Liste ein Element ändern was mehrfach vorkommen könnte. Bsp:

liste = [2,4,6,8,10,12,12,4,8]

Hier soll innerhalb der Liste, also in-Place eine Änderung der ersten 12 zur 2 durchgeführt werden. Mein Problem: Die Aufgabenstellung sieht vor, das nun nur über for element in liste iteriert wird, nicht über den Index.

Ich soll nun also direkt innerhalb der Liste, mit dieser For-Schleife ein Element ändern, ohne dabei eine Kopie der Liste zu erstellen.

Ich bin dankbar für jeden Ansatz, sollte das überhaupt möglich sein :)

Avatar von

1 Antwort

+2 Daumen

Das ist meines Wissens nach nicht möglich.

Man muss auf den Index zurückgreifen:

liste = [2,4,6,8,10,12,12,4,8]

for index, i in enumerate(liste):
if i==12:
  liste[index] = 2
  break

print(liste)

https://repl.it/@kaibox99/stacklounge-4228


Grundsätzlich sind int in Python unveränderlich. Daher ist ein for i in liste und dann z. B. i = 2 nicht möglich. In diesem Artikel erfährt man im Detail, warum Indizes benötigt werden: https://softwareengineering.stackexchange.com/q/341179/313824

Avatar von

Danke für die Antwort und den Link, darüber werde ich gleich mal brüten.

Ähnliche Fragen

Made by a lovely Community