可以说我有一个看起来像这样的列表:
[
[],
['blah','blah'],
['a','b'],
[],
['abc','2'],
['ff','a'],
['test','a'],
[],
['123','1'],
[]
]
Run Code Online (Sandbox Code Playgroud)
如何在遇到空项目时将此列表分解为列表列表
所以list [0]会有:
['blah','blah']
['a','b']
Run Code Online (Sandbox Code Playgroud)
列表[1]会有:
['abc','2']
['ff','a']
['test','a']
Run Code Online (Sandbox Code Playgroud)
你可以使用itertools.groupby,使用bool作为关键:
from itertools import groupby
lst = [list(v) for k,v in groupby(l, key=bool) if k]
Run Code Online (Sandbox Code Playgroud)
演示:
In [22]: from itertools import groupby
In [23]: lst = [list(v) for k,v in groupby(l,key=bool) if k]
In [24]: lst[1]
Out[24]: [['abc', '2'], ['ff', 'a'], ['test', 'a']]
In [25]: lst[0]
Out[25]: [['blah', 'blah'], ['a', 'b']]
Run Code Online (Sandbox Code Playgroud)
k 每个空列表都为False,所有非空列表为True.
In [26]: bool([])
Out[26]: False
In [27]: bool([1])
Out[27]: True
In [28]: bool([1,1,3])
Out[28]: True
Run Code Online (Sandbox Code Playgroud)