Python 中原始列表中特定项目的子列表提取

Sublists Extraction in Python on a specific item in original list

问题

如何从列表中提取子列表,每个子列表的上下边缘是列表中的特定项。

示例 1

输入

Sublist_Slicing_edge = 0

我的列表 = [0,1,0,1,-1,-1,-2,1,2,3,4,0]

期望的输出

list1 = [0,1,0]

list2 = [0,1,-1,-1,-2,1,2,3,4,0]

示例 2

输入

Sublist_Slicing_edge = "我"

mylist = [“我”,“我”,“一个”,“工程师”,“和”,“我”,“我”,“也”,“一个”,“科学家”,”! ","但是","我","是","不是","a","数学家"]

期望的输出

list1 = ["我", "我", "一个", "工程师", "和", "我"]

list2 = ["我", "我", "也是","a", "科学家","!","但是","我"]

解决方案需要您执行以下步骤:

  1. 查找列表中特定项目的索引位置

  2. 根据步骤 1 中找到的索引位置对主列表进行切片

  3. 查找元素在列表中的索引位置

>>> mylist = ["I" , "am" , "an" , "Engineer" , "and" , "I" , "am", "also","a" , "Scientist","!","But","I","am","not","a","Mathmatician"]
>>> sublist_str = "I"
>>> indexes_list = [i for i,v in enumerate(mylist) if v == sublist_str]
>>> indexes_list
[0, 5, 12]
  1. 正在使用索引位置创建子列表:
>>> [mylist[indexes_list[i]:indexes_list[i+1]+1]  for i in range(len(indexes_list)-1)]
[['I', 'am', 'an', 'Engineer', 'and', 'I'], ['I', 'am', 'also', 'a', 'Scientist', '!', 'But', 'I']]