📅  最后修改于: 2023-12-03 14:46:26.631000             🧑  作者: Mango
有时候,我们需要将列表中的连续元素按照一定规则进行分组,以便在处理这些元素时更加方便。本文将介绍如何使用 Python 对列表中的连续元素进行分组。
Python 的 itertools 模块提供了一个名为 groupby() 的函数,该函数可以对迭代器进行分组。我们可以使用该函数对列表中的连续元素进行分组。
from itertools import groupby
lst = ['A', 'B', 'B', 'C', 'C', 'A', 'D', 'E', 'E', 'E']
groups = groupby(lst)
for key, group in groups:
print(key, list(group))
输出结果为:
A ['A']
B ['B', 'B']
C ['C', 'C']
A ['A']
D ['D']
E ['E', 'E', 'E']
groupby() 函数返回的是一个迭代器,其中的每个元素都是一个键值对 (key, group),其中 key 表示当前分组的键,group 是一个迭代器,其中包含了当前分组的所有元素。
除了使用 itertools 模块的 groupby() 函数外,我们还可以使用 for 循环扫描列表中的元素,以实现对连续元素的分组。
lst = ['A', 'B', 'B', 'C', 'C', 'A', 'D', 'E', 'E', 'E']
result = []
for i, item in enumerate(lst):
if i == 0 or item != lst[i-1]:
result.append([])
result[-1].append(item)
print(result)
输出结果为:
[['A'], ['B', 'B'], ['C', 'C'], ['A'], ['D'], ['E', 'E', 'E']]
该方法的思路是使用一个空列表 result 来存储分组结果。从头到尾扫描列表中的每个元素,如果该元素与前一个元素不同,则创建一个新的空列表,将该元素加入到新列表中,并将新列表加入到 result 中;否则,直接将该元素加入到最后一个列表中。
本文介绍了两种方法来对列表中的连续元素进行分组。使用 itertools 模块的 groupby() 函数可以更加简洁地实现该功能,而使用 for 循环实现的方法则更加灵活,可以根据具体的需求进行定制。