Да, вы должны использовать простое сравнение для этого. Если в списке более 5 элементов, отбросьте последние 5. Представьте себе, что все , но , сохраните все 5.
if len(the_list) > 5:
the_list = the_list[:-4]
Если вы хотите уменьшить список до тех пор, пока у вас будет не более 5 элементов, замените if
на while
.
обновление за разъяснение ОП
Ваша задача состоит в том, чтобы удалять группы из 5 элементов, пока их не станет больше 5. Это достаточно просто с оператором модуля.
final_size = len(the_list) % 5
if final_size = 0:
final_size = 5
the_list = the_list[:final_size]
Ваш исходный код имеет несколько структурных проблем. Если вас беспокоит количество элементов в списке, почему вы проверяете наличие определенного элемента? 5 in the_list
ищет значение 5, а не 5 элементов.
Во-вторых, ваш список состоит из целых чисел, но вы пытаетесь удалить самореферентный подсписок:
the_list.remove(the_list[-4:])
Как вы уже знаете, этот фрагмент представляет собой определенный список из пяти элементов. У вас нет подсписка в the_list
, поэтому вы не найдете его как элемент. Если вы хотите специально удалить каждый из элементов из исходного списка, вам придется поочередно проходить по ним. Гораздо проще просто взять фрагмент списка, который вы хотите сохранить.