+1 Daumen
2,5k 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.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community