gpt4 book ai didi

python - 有条件地切片列表

转载 作者:行者123 更新时间:2023-11-28 20:39:40 25 4
gpt4 key购买 nike

我有以下列表:

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']]]

有没有更pythonic的方法?

最佳答案

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

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

关于python - 有条件地切片列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com