Python – itertools.groupby使用详解
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – itertools.groupby使用详解
原文链接:https://www.stubbornhuang.com/2220/
发布于:2022年07月28日 9:09:59
修改于:2022年07月28日 9:09:59

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就是输入迭代对象中去除重复元素的新的序列元素。
当前分类随机文章推荐
- Python - argparse命令行参数解析库用法总结 阅读498次,点赞0次
- Python - Linux/Centos/Ubuntu查看CUDA/cuDNN版本号 阅读3375次,点赞0次
- Python - 使用jsonpickle库对Python类对象进行json序列化和json反序列化操作 阅读2996次,点赞0次
- Python3 - 正则表达式去除字符串中的特殊符号 阅读13097次,点赞1次
- 简单粗暴:使用pycharm安装对应的Python版本第三方包 阅读3538次,点赞0次
- Python - 写爬虫时需要用到那些第三方库 阅读344次,点赞0次
- Python - yaml配置用法详解以及使用Pyyaml库操作yaml文件 阅读750次,点赞0次
- Python - ModuleNotFoundError: No module named 'skimage' 阅读224次,点赞0次
- Python - 运算符/、//和%的含义与区别 阅读354次,点赞0次
- Python - 使用代码判断当前Python版本号 阅读277次,点赞0次
全站随机文章推荐
- Python3爬虫 - 下载反盗链图片的方式 阅读2710次,点赞1次
- Duilib - Label控件文本换行 阅读1731次,点赞1次
- Duilib - Duilib的绘制机制和绘制流程 阅读303次,点赞1次
- 资源分享 - Principles of Digital Image Synthesis , Volume 1 and Volume 2 英文高清PDF下载 阅读1474次,点赞0次
- 资源分享 - Implicit Curves and Surfaces - Mathematics, Data Structures and Algorithms 英文高清PDF下载 阅读1582次,点赞1次
- 计算机图形学 - Flat Shading、Gouraud Shading、Phong Shading的区别 阅读836次,点赞0次
- 在CSDN写博客五年之后,我成为了博客专家 阅读1893次,点赞0次
- 资源分享 - Fluid Simulation for Computer Graphics, First Edition英文高清PDF下载 阅读2592次,点赞0次
- WordPress - 发送邮件很慢的解决办法 阅读509次,点赞1次
- 资源分享 - An Introduction to Ray Tracing 英文高清PDF下载 阅读995次,点赞0次
评论
167