リストや辞書の内容でループしながら、そのループしているリストなどを書き換えることはすべきではありません。通常は予期しない結果が出ます。
例外の例としては、巨大なデータを扱っていてメモリを節欲するために内容見ながら書き換えるようなことをする必要がある場合などですね。その場合も、その言語がどのようにデータを管理しているかを考えながら処理を行なう必要があります。
通常の対応方法はいろいろありますが、質問のように不要なものを削除する場合、必要なものだけ抽出するのように読み替えることで、ループの中でリストを直接変更することを避けられます。
python
1ans = []
2for i in s:
3 if not(i=="a" or i=="i" or i=="u" or i=="e" or i=="o"):
4 ans.append(i)
5print(i)
6print(ans)
(他の回答の内包表記も同じ考え)
ちなみに、判定で 「 複数のうちのどれか」を書くとき、orでつなぐよりも、「in」を使った方や読みやすくなります。
python
1 if i not in ["a", "i", "u", "e", "o"]: