En Java je peux le faire en utilisant un Iterator
puis en utilisant la méthode .remove()
du iterator pour enlever le dernier élément retourné par l'itérateur, comme ceci:Retirer les éléments que vous traversez une liste en Python
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]
*/
Comment ferais-je cela en Python? Je ne peux pas modifier la liste pendant que je l'itère dans une boucle for car cela provoque l'omission de la tâche (voir here). Et il ne semble pas y avoir un équivalent de l'interface Iterator
de Java.
I Je me demande si l'utilisation d'un itérateur inversé pourrait être une solution. Des pensées à ce sujet? Ce serait mieux que de faire une copie d'une liste. –
http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python Il est demandé beaucoup ... –