0889デフォルトの名無しさん
2018/09/15(土) 15:32:30.08ID:heijdb7vを回避するためにはリストをまるまるコピーしなくてはならず、とても効率が悪い。
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)
[:] とすることで元のリストのコピーとなり要素の順番を全て取得でき、全ての要素を順番に削除が行える。