我有一个类似以下的 list :

lst = ['a', 'a', 'a', 'start', 'b', 'end', 'a', 'a','a','start','b','b','b','end','a','a','a','a','start','b','b','end']

我想要的结果是将列表拆分成这样的子列表:

[['a', 'a', 'a'], ['start', 'b', 'end'], ['a', 'a','a'],['start','b','b','b','end'],['a','a','a','a'],['start','b','b','end']]

所以Start和End都是关键字,有没有什么方法可以通过使用特定的关键字/如果匹配的话来使用.Split()?

到目前为止,我已经做了一个函数,可以找到‘Start’的索引,即starting_ind = [3, 9, 18]ending_ind = [5, 13, 21],但是如果我这样做了

temp=[]
for i in range(len(starting_ind)):
       x = lst[starting_ind[i]: ending_ind[i]]
       temp += x
print(temp)     

结果是不正确的.

推荐答案

该解决方案不需要您事先计算指数:

lst = ['a', 'a', 'a', 'start', 'b', 'end', 'a', 'a', 'a', 'start', 'b', 'b',
       'b', 'end', 'a', 'a', 'a', 'a', 'start', 'b', 'b', 'end', 'a', 'a', 'a']
result = []
sublist = []

for el in range(len(lst)):
  if lst[el] == 'start':
    result.append(sublist.copy())
    sublist.clear()
    sublist.append(lst[el])
  else:
    sublist.append(lst[el])
    if lst[el] == 'end':
      result.append(sublist.copy())
      sublist.clear()
    if el == len(lst) - 1:
      result.append(sublist)
print(result)

结果是:

[['a', 'a', 'a'], ['start', 'b', 'end'], ['a', 'a', 'a'], ['start', 'b', 'b', 'b', 'end'], ['a', 'a', 'a', 'a'], ['start', 'b', 'b', 'end'], ['a', 'a', 'a']]

Python相关问答推荐

运行Python脚本时,用作命令行参数的SON文本

在Python中动态计算范围

将输入聚合到统一词典中

如何使用两个关键函数来排序一个多索引框架?

在pandas/python中计数嵌套类别

python—telegraph—bot send_voice发送空文件

如何使用正则表达式修改toml文件中指定字段中的参数值

裁剪数字.nd数组引发-ValueError:无法将空图像写入JPEG

当输入是字典时,`pandas. concat`如何工作?

为什么dict. items()可以快速查找?

极点替换值大于组内另一个极点数据帧的最大值

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

为什么在Python中00是一个有效的整数?

对数据帧进行分组,并按组间等概率抽样n行

有没有一种方法可以在朗肯代理中集成向量嵌入

多索引数据帧到标准索引DF

如何使用Polars从AWS S3读取镶木地板文件

将Pandas DataFrame中的列名的长文本打断/换行为_STRING输出?

多个布尔条件的`jax.lax.cond`等效项

通过外键Django创建从一个字段到其他字段的 Select 列表