我需要一个函数,它接受两个元素元组的列表并返回这些元组分组在列表中,其中元组的第二个元素相等,并保留原始序列顺序。例如,
>>> seq = [(0, 1), (1, 2), (2, 2), (3, 2), (4, 1), (5, 3), (6, 3), (7, 2)]
>>> split_repeated(seq)
[[(0, 1)], [(1, 2), (2, 2), (3, 2)], [(4, 1)], [(5, 3), (6, 3)], [(7, 2)]]
如果我把结果弄平,我必须得到原始序列:
>>> itertools.chain.from_iterable(split_repeated(seq)) == seq
True