Skip to main content
 首页 » 编程设计

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

2025年05月04日13lautakyan007

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

主列表
'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'

list 2
'00:00'
'00:01'
'00:02'
'00:03'
'00:04'

我尝试查看列表切片,但问题是最后一个值和元素数量可能会发生变化。此外,我不确定我需要多少个较小的列表(以及我如何动态创建 n 个较小的列表?)

请您参考如下方法:

我通常这样做:

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

不可避免的 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))