Python 有条件地分割列表

Python 有条件地分割列表,python,list-comprehension,Python,List Comprehension,我有以下清单: alist = [['color1'], ['clr1', '361', '0'], ['clr2', '1', '0'], ['clr3', '77', '0'], ['clr4', '660', '73'], ['color2'], ['clr1', '201', '0'], ['clr2', '25', '0'], ['clr3', '312',

我有以下清单:

alist = [['color1'],
        ['clr1', '361', '0'],
        ['clr2', '1', '0'],
        ['clr3', '77', '0'],
        ['clr4', '660', '73'],
        ['color2'],
        ['clr1', '201', '0'],
        ['clr2', '25', '0'],
        ['clr3', '312', '73'],
        ['clr4', '132', '314']]
我需要把名单分成几个小的。该列表包含列表。如果长度为1的列表中有一个元素(列表),则该元素是拆分列表的起点,而停止点是长度为1的列表中的另一个元素。拆分后,将其移动到名为nlist的列表中。到目前为止,我已经编写了以下代码:

idx = [i for i,x in enumerate(alist) if len(x) ==1]
idx.append(len(alist))
nlist = []
for i in range(0, len(idx)-1):
    nlist.append(alist[idx[i]:idx[i+1]])
它确实会产生如下预期结果:

nlist = [[['color1'],
        ['clr1', '361', '0'],
        ['clr2', '1', '0'],
        ['clr3', '77', '0'],
        ['clr4', '660', '73']],
        [['color2'],
        ['clr1', '201', '0'],
        ['clr2', '25', '0'],
        ['clr3', '312', '73'],
        ['clr4', '132', '314']]]

有没有更像蟒蛇的方法

在一个循环中创建新列表:

split_list = []
for item in alist:
    if len(item) == 1:
        split_list.append([])
    split_list[-1].append(item)

您还可以使用列表理解创建
nlist

nlist = [alist[idx[i]:idx[i+1]] for i in range(0, len(idx)-1)]