Как последовательно сократить список? [python]

Изучаю питон по книге Э.Мэтиза, помогите разобраться с задачей пожалуйста.

Задача: Используйте метод pop() для последовательного удаления гостей из списка до тех пор, пока в списке не останется только 2 человека. Каждый раз, когда из списка удаляется очередное имя, выведи для этого человека сообщение о том, что ты сожалеешь об отмене приглашения.

Мой код:

guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
for guest in guests:
    count_guests = len(guests)
    if count_guests != 2:
        popped_guests = guests.pop()
        print(popped_guests.title() + ', вы удалены из списка приглашенных! Мне жаль!')
    else:
        print(guest.title() + ', а для вас осталось приглашение!')

Терминал выводит такой ответ:

Вася, вы удалены из списка приглашенных! Мне жаль!
Саша, вы удалены из списка приглашенных! Мне жаль!
Алена, вы удалены из списка приглашенных! Мне жаль!

Вопросы: почему не срабатывает else? почему удаляет только 3 из 6 элементов списка, когда должен вроде удалить 4? Спасибо!


Ответы (3 шт):

Автор решения: MBo

Вы зря вот это:

for guest in guests:

затеяли. На четвёртом круге цикл должен дойти до Алёны, а её уже и нет.

Измените цикл

→ Ссылка
Автор решения: n1tr0xs

Для таких целей лучше всего использовать цикл while.

guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
    popped_guest = guests.pop()
    print(popped_guest.title() + ', вы удалены из списка приглашенных! Мне жаль!')   

Ну и если вы хотите вывести тех, кому приглашение досталось:

guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
    popped_guest = guests.pop()
    print(popped_guest.title() + ', вы удалены из списка приглашенных! Мне жаль!')
for g in guests:
    print(g.title() + ', а для вас осталось приглашение!')
→ Ссылка
Автор решения: CameL

Используйте цикл While, удаляя элементы, пока в списке их не останется два.

guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
        popped_guests = guests.pop()
        print(popped_guests.title() + ', вы удалены из списка приглашенных! Мне жаль!')
else:
    print([guest.title()+ ', а для вас осталось приглашение!' for guest in guests])
→ Ссылка