Abb*_*bas 2 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', '73'],
['clr4', '132', '314']]
Run Code Online (Sandbox Code Playgroud)
我需要将列表拆分成较小的列表.该列表包含列表.如果长度为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]])
Run Code Online (Sandbox Code Playgroud)
它确实产生了如下所需的结果:
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']]]
Run Code Online (Sandbox Code Playgroud)
有更多的pythonic方法吗?
在一个循环中创建新列表:
split_list = []
for item in alist:
if len(item) == 1:
split_list.append([])
split_list[-1].append(item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |