Remove elements as you traverse a list in Python
iterator, list, loops, python, python-datamodel
Solution
Iterate over a copy of the list:
for c in colors[:]:
if c == 'green':
colors.remove(c)
Problem
In Java I can do by using an `Iterator` and then using the `.remove()` method of the iterator to remove the last element returned by the iterator, like this: ``` import java.util.*; public class ConcurrentMod { public static void main(String[] args) { List<String> colors = new ArrayList<String>(Arrays.asList("red", "green", "blue", "purple")); for (Iterator<String> it = colors.iterator(); it.hasNext(); ) { String color = it.next(); System.out.println(color); if (color.equals("green")) it.remove(); } System.out.println("At the end, colors = " + colors); } } /* Outputs: red green blue purple At the end, colors = [red, blue, purple] */ ``` How would I do this in Python? I can't modify the list while I iterate over it in a for loop because it causes stuff to be skipped (see here). And there doesn't seem to be an equivalent of the `Iterator` interface of Java.