Py-for繰り返し文はどうして出てこないのですか


数字リストから奇数を得たいだけです.
def remove_odd_numbers(numbers):
	for i in numbers:
      	if i % 2 == 0:
        	numbers.remove(i)
    return print(numbers)
numbers=[2,7,4,12,3,9]の場合
関数を出力するとビットと同じ結果になります
どうしてこんな結果になったの?
pythonはfor文を初めて起動し、numbersが[0]の2は偶数であるためnumbersである.remove(i)から削除します.
事実問題はここで起きた.私が考えているPython.
最初のfor numbers=は[2,7,4,12,3,9]から2を削除する
2番目のfor mun-numbers=[,7,4,12,3,9]に生存する7
3番目のfor mun-numbers=[,7,4,12,3,9]から4を削除
...
君はこんなに賢く濾過すると思っていた.
最初のfor mun-numbers=[2,7,4,12,3,9]から2を削除すると
数字=[7,4,12,3,9].次に、この数値リストでfor文を繰り返します.
すなわち、for−ifはnumber[0]の2を取り除き、number[1]はifゲートを迂回する必要があり、number[1]は7ではなく4になった.
つまり、7の生存は私のコードのためではなく、直接スキップしたのです.
したがって,2番目の繰返しでは4を除いてnumber=[7,12,3,9]では3番目の繰返し文が戻り,element 12,number[2]の3をスキップして検証され,12が生存する.

解決策


は、このように既存のリストを反転させ、対応する要素で既存のリストを繰り返し検証する.