Рубрики

Python | Последовательная группировка элементов в списке

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

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

# Python-код для демонстрации работы
# Список последовательных элементов
# используя enumerate () + groupby () + генераторная функция + лямбда

import itertools

  
# Функция Генератора утилит

def groupc(test_list):

    for x, y in itertools.groupby(enumerate(test_list), lambda (a, b): b - a):

        y = list(y)

        yield y[0][1], y[-1][1]

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

test_list = [1, 2, 3, 6, 7, 8, 11, 12, 13]

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

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

  
# Список последовательных элементов
# используя enumerate () + groupby () + генераторная функция + лямбда

res = list(groupc(test_list))

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

print("Grouped list is : " + str(res))

Выход :

The original list is : [1, 2, 3, 6, 7, 8, 11, 12, 13]
Grouped list is : [(1, 3), (6, 8), (11, 13)]

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

Python | Последовательная группировка элементов в списке

0.00 (0%) 0 votes