python学习笔记(2)——groupby

时间:2022-07-24
本文章向大家介绍python学习笔记(2)——groupby,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

itertools中groupby的学习

首先看一下昨天在codewars上遇到的一题: Unique In Order Implement the function unique_in_order which takes as argument a sequence and returns a list of items without any elements with the same value next to each other and preserving the original order of elements. For example:

unique_in_order('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
unique_in_order('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
unique_in_order([1,2,2,3,3])       == [1,2,3]
123

再来看一下高分答案:

from itertools import groupby
def unique_in_order(iterable):
	return [k for (k, _) in groupby(iterable)]
123

groupby方法在itertools模块中,适用于数据处理等方面。

itertools.groupby(iterable,key=None)
1

这个函数的有两个参数,第一个是可迭代对象,第二个是key。 groupby可以将相邻的重复元素挑出来放在一起:

for key,group in itertools.groupby('AAAABBBBCCAA'):
	print(key,list(group)


输出如下:
A ['A', 'A', 'A', 'A']
B ['B', 'B', 'B', 'B']
C ['C', 'C']
A ['A', 'A']
123456789

再看一个例子:

该例子更加明显的体现了groupby的数据处理能力,需要更加用心体会。 此时再回过头来看很高分答案,k for (k,_) in groupby(iterable),与key for key in groupby(iterable)是相同作用,对该答案有了更深的理解。