关于这个问题,Python 的 itertools.groupby 函数本身并没有非懒惰版本的实现。但是,您可以通过一些方法来实现类似的功能。
itertools.groupby 是一个非常有用的函数,它可以将一个可迭代对象中的连续元素分组。它的懒惰版本是通过传递一个关键字参数 key 来实现的,这个参数是一个函数,用于确定分组的依据。在懒惰版本中,只有在需要时才会计算下一个元素的 key 值,因此可以节省计算资源。
如果您需要一个非懒惰版本的 itertools.groupby,可以考虑以下方法:
from itertools import groupby
data = [1, 1, 2, 2, 3, 3]
key_func = lambda x: x
for key, group in groupby(data, key_func):
print(key, list(group))
from toolz import groupby
data = [1, 1, 2, 2, 3, 3]
key_func = lambda x: x
for key, group in groupby(data, key_func):
print(key, list(group))
需要注意的是,这两种方法都会立即计算所有元素的 key 值,因此可能会消耗更多的计算资源。如果您的数据集非常大,建议使用懒惰版本的 itertools.groupby 函数,以避免内存不足的问题。
领取专属 10元无门槛券
手把手带您无忧上云