I have a list like the following:

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

and my desired result is to split the list into sublists like this:

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

so start and end are keywords, is there anyway you can use .split() by using particular keywords/if it matches?

So far I have made a function which finds the indices of 'start' i.e. starting_ind = [3, 9, 18] and ending_ind = [5, 13, 21] however if I do

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

the result is incorrect.

推荐答案

This solution doesn't require you to calculate indices beforehand:

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)

The result is:

[['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相关问答推荐

从 3D 图像的每个像素中减去 2D 数组,得到 4D 数组

将Pandas 数据框的两列与字符串列表进行比较

如何获得连续条件的最大值为真?

Pandas(如何修复):列表实际上是字符串,长度的值具有误导性

如何优化成为每列红色标记的前三名数据

python中的复杂列表比较

计算数据框的复合回报

通过列表访问数据框

为什么这些 Python 日期时间转换会受到本地时间(UTC 偏移量和 DST)的影响?

用逗号分割字符串,这样每个句子都是一个单独的字符串

Python:循环和编辑字符串字符

如何在非常大的 torch 张量上执行操作而不分裂它们

具有多索引的 Pandas 一阶差分面板数据

如何通过 CUDA 支持将 BGR NumPy 数组直接传递给 FFMPEG

Python中的类对象和类类型

在Python中从多个数组中的特定位置形成一个包含元素的数组

如何在给定一个信息的情况下访问 JSON 信息,如果另一个信息是该信息的“sibling ”,而不是 Python 中的子元素?

如何将图像大小调整为 shape=(None, 321, 321, 3) 名称为 name=None 和 dtype=tf.float32

当特定列相同时附加 id

matplotlib 也没有显示 x 轴和 y 轴标签和值以及图表标题