Рубрики

Python | Последовательные элементы в списке

Иногда, работая со списком Python, мы можем столкнуться с проблемой, из-за которой нам нужно получить количество последовательных элементов, оставшихся (включая текущие), чтобы заранее принять определенные решения. Это может стать потенциальной подзадачей многих соревновательных соревнований по программированию. Давайте обсудим стенографию, которая может быть применена для решения этой проблемы.

Метод: Использование range() + from_iterable() + groupby() + list comprehension
Эта задача может быть выполнена и решена с использованием комбинации вышеуказанных функций. В этом мы сначала используем функцию groupby для формирования групп и преобразования их в обратные диапазоны с помощью range() . Все это преобразуется в генератор, чтобы избежать создания вложенного списка, а затем окончательный список получается с помощью from_iterable() .

# Python3 код для демонстрации работы
# Последовательные оставшиеся элементы в списке
# используя range () + from_iterable () + groupby () + понимание списка

from itertools import chain, groupby

  
# инициализировать список

test_list = [4, 4, 5, 5, 5, 1, 1, 2, 4]

  
# печать оригинального списка

print("The original list is : " + str(test_list))

  
# Последовательные оставшиеся элементы в списке
# используя range () + from_iterable () + groupby () + понимание списка

temp = (range(len(list(j)), 0, -1) for i, j in groupby(test_list))

res = list(chain.from_iterable(temp))

  
# результат печати

print("Consecutive remaining elements list : " + str(res))

Выход :

The original list is : [4, 4, 5, 5, 5, 1, 1, 2, 4]
Consecutive remaining elements list : [2, 1, 3, 2, 1, 2, 1, 1, 1]

Рекомендуемые посты:

Python | Последовательные элементы в списке

0.00 (0%) 0 votes