0

2つの要素タプルのリストを受け入れ、タプルの2番目の要素が等しく、元のシーケンス順序が保持されているリストにグループ化されたこれらのタプルを返す関数が必要です。例えば、

>>> 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
4

1 に答える 1

2
>>> seq = [(0, 1), (1, 2), (2, 2), (3, 2), (4, 1), (5, 3), (6, 3), (7, 2)]
>>> from itertools import groupby
>>> from operator import itemgetter
>>> [list(items) for key,items in groupby(seq,key=itemgetter(1))]
[[(0, 1)], [(1, 2), (2, 2), (3, 2)], [(4, 1)], [(5, 3), (6, 3)], [(7, 2)]]
于 2012-07-06T19:02:12.500 に答える