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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50