Javaで私はIterator
を使って、次にイテレータの.remove()
メソッドを使って、イテレータによって返された最後の要素を削除することができます: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]
*/
これをPythonでどうやってできますか? forループで繰り返し処理している間は、リストを変更できません。これは、スキップされる(here参照)ためです。そして、JavaのIterator
インタフェースに相当するようには見えません。
Iのように行うことができます逆のイテレータを使用することが解決策になるのではないかと思います。これについての考えは?それはリストのコピーを作るよりも良いでしょう。 –
http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python 尋ねられます。 –