Z góry zaznaczam, że nie programuję w pythonie. Jednak pytanie wydało mi się interesujące.
Zmodyfikowałem lekko twój kod, żeby zdebugować co się dzieje
items = [1, 3, 4, 5, 6, 9, 10, 17, 23, 24]
for liczba in items:
print("items:", items, "liczba:", liczba)
if liczba % 2 != 0:
print("usun:", liczba)
items.remove(liczba)
print(items)
Pętla sprawdza liczby 1,4,5,9,17,24
Wygląda że python podczas iteracji używa ukrytego przed użytkownikiem indeksu. Python nie jest w stanie wykryć, że kontener po którym iteruje został zmieniony, dlatego po usunięciu elementu pętla "omija" kolejny element.