当前位置: 首页 > news >正文

Python itertools模块的groupby函数介绍

itertools.groupby 是 Python 标准库 itertools 模块中的一个函数,它的主要功能是对可迭代对象中相邻的相同元素进行分组。

itertools.groupby(iterable, key=None) 函数

作用:

将连续的(相邻的)相同元素分组,返回 (key, group) 的迭代器。

导入方式:
import itertools
参数说明:
  • iterable:要进行分组的可迭代对象。

  • key(可选):一个函数,用来指定分组依据;默认是元素本身。

注意事项:
  • 它 不会自动排序或打乱顺序,只会对连续相同 key 的元素进行分组。

  • 所以通常配合 sorted() 使用,才能对非连续相同元素也正确分组。

基础示例代码:

import itertools

data = [1, 1, 2, 2, 2, 3, 1]

for key, group in itertools.groupby(data):
    print(f"{key} -> {list(group)}")

输出:

1 -> [1, 1]
2 -> [2, 2, 2]
3 -> [3]
1 -> [1]

注意最后又出现了一个 1 -> [1],因为 groupby 是按“连续”的来分组的!

搭配 key 使用示例:

比如我们对一组字符串按首字母分组:

data = ['apple', 'apricot', 'banana', 'blueberry', 'cherry']

# 需要先排序,否则相同首字母不连续
data_sorted = sorted(data, key=lambda x: x[0])

for key, group in itertools.groupby(data_sorted, key=lambda x: x[0]):
    print(f"{key} -> {list(group)}")

输出:

a -> ['apple', 'apricot']
b -> ['banana', 'blueberry']
c -> ['cherry']

实用小技巧:

你可以用 groupby 来做各种分组统计,比如:

  • 按类型分组处理对象;

  • 对已排序的日志数据按日期分组;

  • 对字符流按重复字符分组等等。

相关文章:

  • ctfshow WEB web12
  • 【力扣05】最长回文子串
  • Transformer 分布式训练代码
  • 蓝队技能-Web入侵-入口查杀攻击链
  • 系统设计思维的讨论
  • 常见的后缀名
  • 第九天 开始Unity Shader的学习之单张纹理
  • 指针数组 vs 数组指针
  • MCP结合高德地图完成配置
  • dify windos,linux下载安装部署,提供百度云盘地址
  • SQL:Normalization(范式化)
  • 豪越赋能消防安全管控,解锁一体化内管“安全密码”
  • 07_Z-Stack多节点组网及终端消息上报
  • 《Python星球日记》第26天:Matplotlib 可视化
  • SEER: Self-Aligned Evidence Extraction for Retrieval-AugmentedGeneration
  • SQL 查询中涉及的表及其作用说明
  • docker compose方式安装ClickHouse数据库
  • 工会考试重点内容有哪些:核心考点与备考指南
  • 软考-数据库系统工程师(15万词+400张图片)(一)
  • SFM/MVS_NERF_3DGAUSS三维重建
  • 如何快速做单页面网站/可以直接打开网站的网页
  • 企业网站报价方案下载/广州最新疫情
  • 高端文化网站模板/收录网站是什么意思
  • b2b2c的网站/网站优化排名的方法
  • 外贸商城网站制作/seo优化的方法
  • 做电影网站用什么软件叫什么/百度网站首页入口