我在列表中有一系列数据点(元组),格式如下:
points = [(1, 'a'), (2, 'b'), (2, 'a'), (3, 'd'), (4, 'c')]
每个元组中的第一项是一个整数,并且保证它们是有序的。每个元组中的第二个值是任意字符串。
我需要将它们按系列中的第一个值分组到列表中。因此,给定一个 3 的间隔,上面的列表将被分解为:
[['a', 'b', 'a', 'd'], ['c']]
我编写了以下函数,它适用于小型数据集。但是,它对于大量输入是无效的。关于如何重写/优化/最小化它以便我可以处理大型数据集的任何提示?
def split_series(points, interval):
series = []
start = points[0][0]
finish = points[-1][0]
marker = start
next = start + interval
while marker <= finish:
series.append([point[1] for point in points if marker <= point[0] < next])
marker = next
next += interval
return series