#わからないこと
Python学習中のものです。
Pythonのループ処理について、根本的なことかもしれないのですが教えていただきたいです。
今、ループのin
のあとにリストを指定して、ループの処理の最中にそのリストをいじるようなプログラムを作っていました。
具体的には、リストの中身をすべて参照して、条件に合うものはリストから削除するというプログラムです。
しかし実際に作っているものがうまくいってなさそうなので、下記のようなシンプルなコードで試してみました。
python
1lists = [i for i in range(10)] # [0~9までのリスト] 2cnt = 0 3 4for i in lists: 5 # 奇数なら削除 6 if i % 2 == 1: 7 lists.remove(i) 8 cnt += 1
すると、lists
の中身はちゃんと[0, 2, 4, 6, 8]
になるのですが
cnt
の値が5になってしまいます。
これが10にならないのはどういうことでしょうか。
これはどういったことが起こっているのでしょうか?
途中でリストのインデックスがずれて、参照していない中身があるということなのでしょうか?
また、もしこのようにリストの中で条件に合うものを削除したい場合はどのようにするのがよいのでしょうか?
削除するモノリストを別に用意して、あとでまとめて削除するとか・・・?
宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/08 01:09
2019/06/08 07:53