📅  最后修改于: 2023-12-03 15:34:22.202000             🧑  作者: Mango
itertools.groupby(iterable, key=None)
是 Python 中十分有用的函数,可以将迭代器的相邻重复元素挑出来放在一起,形成一个统一的组(group),常用于数据分析、数据处理等场景。
返回一个迭代器,每个元素都是由相同的 key 分组而成的迭代器。
下面,我们通过代码举例说明:
from itertools import groupby
# 对相邻重复元素分组
data = [1, 1, 2, 3, 3, 3, 4]
for key, group in groupby(data):
print(key, list(group))
输出结果为:
1 [1, 1]
2 [2]
3 [3, 3, 3]
4 [4]
在上面的示例代码中,groupby(data)
将 list 类型的数据 data
中的元素进行分组,由于 key
参数没有定义,故默认将相邻的重复元素放在一起进行分组。最后,通过 for 循环遍历输出每个分组内的元素,结果为:1 组是[1, 1],2 组是[2],3 组是[3, 3, 3],4 组是 [4]。
我们再来举个更复杂一点儿的例子:
from itertools import groupby
# 定义键函数,根据奇偶性分组
def key_fn(x):
if x % 2 == 0:
return "even"
else:
return "odd"
# 对奇偶数进行分组
data = [1, 4, 2, 5, 6, 3]
for key, group in groupby(data, key_fn):
print(key, list(group))
输出结果为:
odd [1]
even [4, 2, 6]
odd [5, 3]
在上面的示例代码中我们自己定义了一个键函数 key_fn
,将列表元素按照其奇偶性分组,最后得到的每组是相邻的奇数或相邻的偶数。
在实际项目中, itertools.groupby()
还是一个非常有用的库,优美而高效地处理数据。