FilippovDY (FilippovDY) 2 месяцев назад
Родитель 199dd8cb09
Сommit 71d1749cc9

@ -134,9 +134,7 @@ for <Объект-переменная цикла> in <объект>:
>>> sps >>> sps
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2] [2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
``` ```
Как видно, в конец цикла добавляется двойка до тех пор, пока длина не превысит 10. Важно Как видно, в конец цикла добавляется двойка до тех пор, пока длина не превысит 10. sps - это объект, по которому проходит k, и объект, изменяющийся внутри цикла. Если список изменяется во время цикла, это влияет на последующие итерации.
понимать, что sps - это и объект, по которому проходит k, и объект, изменяющийся
внутри цикла. Если список изменяется во время цикла, это влияет на последующие итерации.
(При этом else в данном случае относится к if, а не к for. (При этом else в данном случае относится к if, а не к for.
Теперь выполним чуть-чуть отличающуюся совокупность операций: Теперь выполним чуть-чуть отличающуюся совокупность операций:
@ -150,8 +148,7 @@ for <Объект-переменная цикла> in <объект>:
>>> sps >>> sps
[2, 15, 14, 8, 2, 2, 2, 2] [2, 15, 14, 8, 2, 2, 2, 2]
``` ```
Как видно, итог другой, и вот почему. Операция взятия среза sps[:] создает полную копию Операция взятия среза sps[:] создает полную копию исходного списка (срез от начала до конца включительно).
исходного списка (срез от начала до конца включительно).
Теперь список, по которому пробегается k, и список, изменяющийся внутри цикла - это объекты, имеющие разные адреса. Цикл итерируется по копии, но изменяет оригинальный список sps. Итерации происходят только 4 раза (по 4 элементам в копии), независимо от того, как растет оригинальный список. Теперь список, по которому пробегается k, и список, изменяющийся внутри цикла - это объекты, имеющие разные адреса. Цикл итерируется по копии, но изменяет оригинальный список sps. Итерации происходят только 4 раза (по 4 элементам в копии), независимо от того, как растет оригинальный список.
## 3.3 Пример ## 3.3 Пример

Загрузка…
Отмена
Сохранить