📜  Python|列表中的连续元素分组

📅  最后修改于: 2022-05-13 01:54:41.380000             🧑  作者: Mango

Python|列表中的连续元素分组

有时,在使用Python列表时,我们可能会遇到一个问题,我们可能需要根据它们各自的连续性对列表元素进行分组。数据处理时可能会出现此类问题。让我们讨论一下可以执行此任务的特定方式。

方法:使用enumerate() + groupby() + 生成器函数+ lambda
可以使用上述功能的组合来执行此任务。在此,我们创建了一个生成器函数,在其中我们传递使用enumerate()访问其索引元素并使用groupby()和 lambda 按连续元素分组的列表。仅适用于 Python2

# Python code to demonstrate working of
# Consecutive elements grouping list
# using enumerate() + groupby() + generator function + lambda
import itertools
  
# Utility Generator Function
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]
  
# initialize list
test_list = [1, 2, 3, 6, 7, 8, 11, 12, 13]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Consecutive elements grouping list
# using enumerate() + groupby() + generator function + lambda
res = list(groupc(test_list))
  
# printing result
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)]