以下の仕様もダメ。ループでの要素削除がまともに出来ない。この不具合
を回避するためにはリストをまるまるコピーしなくてはならず、とても効率が悪い。
Cythonでコンパイルしても、Cに比べてとても遅くなってしまう。


http://blog.livedoor.jp/kmiwa_project/archives/1030391127.html
http://sakitake.blogspot.com/2012/10/pythonfor.html

Python で リストの中身をforループで削除する時の注意点。

numbers = [1,2,3,4,5]

とあって、for ループで numbers の中身を消したいと思って、下記のようにすると、失敗する。

for e in numbers:
  numbers.remove(e)

numbers の中に、 2と4 が残ったままとなる。

numbers = [2,4]

Pythonの仕様。

そこで、このようにする。

for e in numbers[:]:
  numbers.remove(e)


[:] とすることで元のリストのコピーとなり要素の順番を全て取得でき、全ての要素を順番に削除が行える。