如何基于分隔符将列表拆分为子列表,类似于str.split()?

Jan*_*ani 4 python

给出如下列表:

[a, SEP, b, c, SEP, SEP, d]
Run Code Online (Sandbox Code Playgroud)

如何将其拆分为子列表列表:

[[a], [b, c], [], [d]]
Run Code Online (Sandbox Code Playgroud)

实际上,我需要一个等效的str.split()列表.我可以把一些东西混在一起,但我似乎无法想出任何整洁和/或pythonic的东西.

我从迭代器获得输入,因此工作的生成器也是可以接受的.

更多例子:

[a, SEP, SEP, SEP] -> [[a], [], [], []]

[a, b, c] -> [[a, b, c]]

[SEP] -> [[], []]
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 8

一个简单的生成器将适用于您的问题中的所有情况:

def split(seq):
    chunk = []
    for val in seq:
        if val == SEP:
            yield chunk
            chunk = []
        else:
            chunk.append(val)
    yield chunk
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了。 (2认同)
  • 我认为这是最好的解决方案.我只是将`SEP`作为参数传递给函数. (2认同)
  • 美丽、简单、易于理解、Pythonic,我“知道”是可能的,但我自己无法想出。似乎按我的预期工作。谢谢! (2认同)