0

有一个list包含strings的,我想在它包含空( )list的每个点拆分它,例如string''

['this', 'is', '', 'an', 'example']

应该成为

[['this', 'is'], ['an', 'example']]

我写了一个生成器来做到这一点:

def split(it, delimiter):
    it = iter(it)
    buffer = []
    while True:
        element = next(it)
        if element != delimiter:
            buffer.append(element)
        elif buffer:
            yield buffer
            buffer = []

itertools由于这看起来很笼统,我想知道我是否在其他地方或其他地方错过了一些类似的功能或相关模式......?

4

2 回答 2

3
>>> from itertools import groupby
>>> words = ['this', 'is', '', 'an', 'example']
>>> [list(g) for k, g in groupby(words, ''.__ne__) if k]
[['this', 'is'], ['an', 'example']]
>>> [list(g) for k, g in groupby(words, 'is'.__ne__) if k]
[['this'], ['', 'an', 'example']]
于 2013-05-03T13:10:02.577 回答
0

您可以简单地对列表进行切片,您所要做的就是找到分隔符的索引。

于 2013-05-03T13:11:36.767 回答