给出如下列表:
[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)
一个简单的生成器将适用于您的问题中的所有情况:
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)