python:找到空条目时将列表分成多个部分

use*_*455 3 python list

可以说我有一个看起来像这样的列表:

[
  [],
  ['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)

Pad*_*ham 8

你可以使用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)