Как сделать так, чтобы если в списке стоят 3 одинаковых числа под ряд то они удалялись?
a = [1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 9]
Как сделать так, чтобы если в списке стоят от 3 одинаковых числа подряд то они удалялись? И нужно еще записать сколько элементов было удалено. Желательно, чтобы метод был без применения pip. Я не могу составить алгоритм действий, помогите мне его пожалуйста составить. Я пытался составить алгоритм, но я не смог его составить в силу знания Python
Ответы (2 шт):
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) # выводим конечный список
Первый раз (ваш первый вопрос) - прощается, второй раз - запрещается. Ответ, так и быть, дам (хотя и не должен), НО:
ЧИТАЙТЕ АЛГОРИТМ И СМОТРИТЕ ССЫЛКИ!
Итак, вот Ваш код:
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.