цикл for в связке с методом .pop() прерывают перебор списка.

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Windows 10
Python 3.8.3

Здравствуйте,
возникла проблема при написании кода:
#7-8
sandwich_orders = ['doubleroyale', 'nuggets', 'fileofish', 'bigmac']
finished_sandwiches = []

for sandwich in sandwich_orders:
finished_sandwich = sandwich_orders.pop()
print('Your ' + finished_sandwich + ' is done.')
finished_sandwiches.append(finished_sandwich)

print(finished_sandwiches)

Выход:
Your bigmac is done.
Your fileofish is done.
['bigmac', 'fileofish']

Никак не могу понять почему происходит прерывания цикла for, в конечном списке должны быть наггесыы и двойной рояль...
Изменение элементов списка не приводит к изменению результата.


только что переписал код через цикл while и все заработало отлично, но все равно непонятно почему через Фор происходит остановка на 2ом - 3ем элементе списка?

#7-8
sandwich_orders = ['doubleroyale', 'nuggets', 'fileofish', 'bigmac']
finished_sandwiches = []

while sandwich_orders:
finished_sandwich = sandwich_orders.pop()
print('Your ' + finished_sandwich + ' is done.')
finished_sandwiches.append(finished_sandwich)

print(finished_sandwiches)

Выход:
Your bigmac is done.
Your fileofish is done.
Your nuggets is done.
Your doubleroyale is done.
['bigmac', 'fileofish', 'nuggets', 'doubleroyale']

Очень рассчитываю на вашу помощь!
 
Последнее редактирование:

Farruh

Пользователь
Пользователь
Авг 9, 2020
15
5
3
Не изменяйте список в цикле for.
 
  • Мне нравится
  • Ха-ха!
Реакции: floordiv и Diglerharibo

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Не изменяйте список в цикле for.
ААААААА, типо фор идет по элементам слева направо, а поп() в свое время удаляет элементы справа налево и в итоге они сталкиваются. СПАСИБО
 

Форум IT Специалистов