Wie entferne ich Elemente aus einer Liste während der Iteration?
Es wird im Allgemeinen nicht empfohlen, Elemente aus einer Liste zu entfernen, während man sie durchläuft, da dies unerwartetes Verhalten verursachen kann. Stattdessen können Sie eine neue Liste erstellen, die nur die Elemente enthält, die Sie behalten möchten, oder Sie können eine Schleife mit einem Bereich von Indizes verwenden, um die Liste durchzulaufen und Elemente nach Index zu entfernen. Eine weitere Option besteht darin, eine List Comprehension oder einen Generatorausdruck zu verwenden, um unerwünschte Elemente zu filtern.
Hier ist ein Beispiel dafür, wie man eine neue Liste erstellt:
original_list = [1, 2, 3, 4, 5]
new_list = [i for i in original_list if i % 2 == 0]
print(new_list) # [2, 4]
Hier ist ein Beispiel dafür, wie man einen Bereich von Indizes verwendet, um Elemente zu entfernen:
original_list = [1, 2, 3, 4, 5]
for i in range(len(original_list) - 1, -1, -1):
if original_list[i] % 2 != 0:
original_list.pop(i)
print(original_list) # [2, 4]
Es ist wichtig zu beachten, dass in Python-Version 3.3 und später Schleifen in Python intern einen Iterator aus der Eingabe erstellen. Daher wird in Python 3.3 und später der folgende Code einen RuntimeError: dictionary changed size during iteration
auslösen.
for i in original_list:
if i%2 !=0:
original_list.remove(i)
Sie können eine List Comprehension oder einen Generatorausdruck verwenden, um die unerwünschten Elemente zu entfernen, wie oben gezeigt.