Python-баг, который выглядит безобидно… но ломает логику 👇
Ожидание: оба orange удалятся.
Реальность: один orange остаётся.
Почему так происходит?
Ты изменяешь список во время итерации.
После удаления элементы сдвигаются, и цикл пропускает следующий элемент.
Это классический сценарий продакшн-багов:
• код выглядит правильно
• тесты могут пройти
• но данные обрабатываются неправильно
Правильный вариант:
Мораль:
Изменяешь коллекцию во время обхода -Deploy first. Pray later.
#junior #python
@pythonl
fruits = ["apple", "lime", "orange",
"pineapple", "orange"]
for f in fruits:
if f == "orange":
fruits.remove(f)
print(fruits)
Ожидание: оба orange удалятся.
Реальность: один orange остаётся.
Почему так происходит?
Ты изменяешь список во время итерации.
После удаления элементы сдвигаются, и цикл пропускает следующий элемент.
Это классический сценарий продакшн-багов:
• код выглядит правильно
• тесты могут пройти
• но данные обрабатываются неправильно
Правильный вариант:
fruits = [f for f in fruits if f != "orange"]
Мораль:
Изменяешь коллекцию во время обхода -Deploy first. Pray later.
#junior #python
@pythonl
1❤20👍9😁4🔥2