Python:如何基于分隔符将列表拆分为未知数量的较小列表

cbr*_*008 1 python split list

我有一个包含以下字符串的列表:

MainList
'00:00'
'00:01'
'00:02'
'00:03'
'00:04'
'00:00'
'00:01'
'00:02'
'00:03'
'00:04 "

我想在遇到'00:00'时将其拆分为较少数量的列表,因为'00:00'是唯一不会改变的元素:

期望的输出:
List1
'00:
00''00:
01''00:
02''00:
03''00:04'

List2
'00:
00''00:
01''00:
02''00:
03''00:04'

我试着查看列表切片,但问题是最后一个值,因此,元素的数量可能会改变.而且,我不确定我需要多少个较小的列表(以及我如何动态创建n个较小的列表?)

Joc*_*zel 5

我经常这样做:

def splitby( lst, breaker='00:00'):
    current = []
    it = iter(lst)
    first = next(it)
    assert first==breaker, "`lst` must begin with `breaker`"
    for item in it:
        if item == breaker:
            yield current
            current = []
        current.append(item)
    yield current
Run Code Online (Sandbox Code Playgroud)

不可避免的itertools解决方案更为通用:

from itertools import groupby

class splitter(object):

    def __init__(self, breaker):
        self.breaker = breaker
        self.current_group = 0

    def __call__(self, item):
        if item == self.breaker:
            self.current_group+=1
        return self.current_group

    def group(self, items):
        return (list(v) for k,v in groupby(items,self))

print list(splitter('00:00').group(items))
Run Code Online (Sandbox Code Playgroud)