Как сделать так, чтобы если в списке стоят 3 одинаковых числа под ряд то они удалялись?

a = [1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 9]

Как сделать так, чтобы если в списке стоят от 3 одинаковых числа подряд то они удалялись? И нужно еще записать сколько элементов было удалено. Желательно, чтобы метод был без применения pip. Я не могу составить алгоритм действий, помогите мне его пожалуйста составить. Я пытался составить алгоритм, но я не смог его составить в силу знания Python


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

Автор решения: T0kua
List = [1,1,3,4,6,6,3,5,1] #тестовый список
x = 0 #переменная для количества удаленных элементов
try : #если будет меньше 3-х эл-тов то будет ошибка
    for i in range(len(List)) : # цикл
        if List[i - 2] == List[i] == List[i - 1] : # если элемент равен прошлому и позапрошлому 
            x += 3 # увеличиваем число удаленных элеметов
            List.remove(List[i]) # удаляем 1-й элемент
            List.remove(List[i + 1]) # 2-й элемент
            List.remove(List[i - 1]) # 3-й элемент
except : # если ошибка то 
    print(f'удалено {x} элементов') # выводим данные об удаление
    print(List) # выводим конечный список
→ Ссылка
Автор решения: ПИТОНИСТ версия-3-8

Первый раз (ваш первый вопрос) - прощается, второй раз - запрещается. Ответ, так и быть, дам (хотя и не должен), НО:

ЧИТАЙТЕ АЛГОРИТМ И СМОТРИТЕ ССЫЛКИ!

Итак, вот Ваш код:

a = [1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 9]
s=0
for i in range(len(a) - 3, 0, -1):
    if a[i:i+3] ==  [a[i]] * 3: del a[i:i+3]; s+=3 
print(f'Остался список {a}, удалено {s} символов.')

Алгоритм:

В третьей строке мы используем цикл for для перебора элементов списка a.

Если встречаются 3 элемента подряд, то удаляем их и увеличиваем счётчик на 3.

Затем печатаем фразу со списком a и переменной-счётчиком s.

→ Ссылка