Python – itertools.groupby使用详解
1 itertools.groupby
我们可以通过以下语句导入itertools.groupby
from itertools import groupby
1.1 itertools.groupby函数
1.1函数形式
itertools.groupby(iterable, key=None)
1.2函数参数
- iterable:可迭代的对象,比如list,dict
- key:在遍历过程中重新计算每个键值的函数,默认为None
1.3函数返回值
返回连续key和group的迭代器
1.2 itertools.groupby的使用
我们以一个简单的示例来看一下itertools.groupby的作用到底是神马。
from itertools import groupby
if __name__ == '__main__':
test_list = [1,0,0,0,3,1,5,5,6]
for key,group in groupby(test_list):
print(key,list(group))
输出
1 [1]
0 [0, 0, 0]
3 [3]
1 [1]
5 [5, 5]
6 [6]
从上述代码和代码的执行结果上看,itertools.groupby函数就是对迭代器中的元素进行分组,其中返回的key为分组的元素,group为都为key的可迭代器。
然后我们来看一下在itertools.groupby使用对键值操作函数的例子。
from itertools import groupby
if __name__ == '__main__':
test_list = [1,0,0,0,3,1,5,5,6]
for key,group in groupby(test_list,key=lambda c: c+1):
print(key,list(group))
输出
2 [1]
1 [0, 0, 0]
4 [3]
2 [1]
6 [5, 5]
7 [6]
这个例子和第一个例子在分组的本质上没有区别,不过我们添加了一个lambda函数对分组后的key进行操作,让所有的key都加上1。不过这只会改变分组后的key的值,而已分组的group的中的值是不变的。
1.3 itertools.groupby在实际工程中的妙用
在CTC Decode中,不管使用的是Greedy Decode还是Beam Search Decode都会需要去除相邻的重复元素,而这时我们可以使用itertools.groupby,然后保留key,从上述例子的结果上看,key就是输入迭代对象中去除重复元素的新的序列元素。
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – itertools.groupby使用详解
原文链接:https://www.stubbornhuang.com/2220/
发布于:2022年07月28日 9:09:59
修改于:2023年06月25日 20:50:25
当前分类随机文章推荐
- Python - Linux/Centos/Ubuntu查看CUDA/cuDNN版本号 阅读4432次,点赞0次
- Python - 使用letter box方法缩放图片,防止图片缩放时失真 阅读394次,点赞0次
- Python – 解决opencv-python使用cv2.imwrite()保存中文路径图片失败的问题 阅读2284次,点赞0次
- Python3爬虫 - requests库的requests.exceptions所有异常详细说明 阅读6297次,点赞2次
- Python - BeautifulSoup的find()和findAll() 阅读3086次,点赞0次
- Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线 阅读2863次,点赞0次
- Python - 使用jsonpickle库对Python类对象进行json序列化和json反序列化操作 阅读4044次,点赞0次
- Python - glob模块详解以及glob.glob、glob.iglob函数的使用 阅读1580次,点赞0次
- Python - 类对象/列表/元祖/字典判空的方法 阅读2576次,点赞0次
- Python - 安装onnxruntime-gpu出现ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '...\\numpy-1.23.1.dist-info\\METADATA' 阅读987次,点赞0次
全站随机文章推荐
- 资源分享 - PHP与MySQL程序设计(第3版) 中文 PDF下载 阅读2408次,点赞0次
- ThreeJS - three.moudle.js报Uncaught SyntaxError:Unexpected token ‘export‘错误 阅读2165次,点赞0次
- C++ - Asio和Boost.Asio的区别 阅读296次,点赞0次
- 工具软件推荐 - 几个阅读英文文献的免费中文翻译科研利器推荐 阅读1976次,点赞1次
- 资源分享 - OpenGL 4.0 Shading Language Cookbook (Third Edition) 英文高清PDF下载 阅读3517次,点赞0次
- C++ - 函数返回多个返回值的方法总结 阅读2609次,点赞0次
- 资源分享 - GPU Gems 1 - Programming Techniques, Tips and Tricks for Real-Time Graphics英文高清PDF下载 阅读3820次,点赞0次
- 工具软件 - 开源文献管理软件Zotero的基础设置和插件安装 阅读629次,点赞0次
- TensorRT - onnx_graphsurgeon工具库的安装与API简介 阅读1891次,点赞0次
- Python - opencv-python统计一个文件夹以及所有子文件夹下所有视频的帧率和帧数 阅读720次,点赞0次
评论
169