TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.93K subscribers
Post #4569 754
Развёрнутое пояснение

🔘Список 𝚗𝚞𝚖𝚜 = [𝟸, 𝟺, 𝟼, 𝟾]. Цикл использует внутренний индекс, который увеличивается на каждой итерации.

0️⃣Шаг 𝟶: индекс 𝟶, элемент 𝟸, условие истинно, вызывается 𝚗𝚞𝚖𝚜.𝚛𝚎𝚖𝚘𝚟𝚎(𝟸). Список становится [𝟺, 𝟼, 𝟾], но индекс уже переходит к 𝟷.

1️⃣Шаг 𝟷: индекс 𝟷, в списке [𝟺, 𝟼, 𝟾] это элемент 𝟼 (а не 𝟺!), условие истинно, удаляем 𝟼. Список становится [𝟺, 𝟾], индекс переходит к 𝟸.

2️⃣Шаг 𝟸: индекс 𝟸 выходит за пределы списка длины 𝟸, цикл завершается.

3️⃣Элементы 𝟺 и 𝟾 никогда не были проверены, потому что итератор их «перепрыгнул». Результат: [𝟺, 𝟾].

Почему это важно
Задача наглядно показывает, почему нельзя удалять элементы из списка во время итерации по нему: даже если кажется, что «всё должно удалиться», половина элементов останется. Безопасные альтернативы: итерация по копии 𝚏𝚘𝚛 𝚡 𝚒𝚗 𝚗𝚞𝚖𝚜[:], list comprehension [𝚡 𝚏𝚘𝚛 𝚡 𝚒𝚗 𝚗𝚞𝚖𝚜 𝚒𝚏 𝚡 % 𝟸 != 𝟶], или проход в обратном порядке.
  • ❤ 3
  • ✍ 2
More from @quiz_python
  1. Sep 21, 2026Развёрнутое пояснение: 1. make_handlers создаёт пустой список handlers. 2. Цикл дважды при…
  2. Sep 21, 2026Post #4880
  3. Sep 21, 2026Развёрнутое пояснение: 1. Вызывается persist_order, и блок try печатает строку write. 2. И…
  4. Sep 21, 2026Post #4878
  5. Sep 14, 2026А вы уже забрали свой подарок ко Дню программиста? Мы в Tproger вместе с нашими друзьями с…
  6. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся список batch с двумя разными словарями. 2. Вызов enric…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →