Python检索列表中标记之间的嵌套值列表

swe*_*123 2 python list slice

我有一个列表是:

[2,3,5,"TAG",6,7,3,2,6,"TAG",9,9,8,3]
Run Code Online (Sandbox Code Playgroud)

我想返回一个列表,其中包含位于"TAG"之间的嵌套的值列表.

所以结果列表看起来像:

[[2,3,5], [6,7,3,2,6], [9,9,8,3]]
Run Code Online (Sandbox Code Playgroud)

我在下面创建了一个尝试实现此方法但不起作用的方法:

def returnListBetweenTag(lst, tag):
  temp = []
  k = lst.index(tag)
  while lst != []:
      temp.append(lst[0:k])
      del lst[0:k+1]
  return temp
Run Code Online (Sandbox Code Playgroud)

打印出:

[[2, 3, 5], [6, 7, 3], [6, 'TAG', 9], [8, 3]]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我理解我做错了什么,并提出一些修复建议吗?

Ste*_*uch 5

使用如下发生器时,这是相当直接的:

码:

def divide_list(a_list, divider):
    sub_list = []
    for item in a_list:
        if item == divider:
            yield sub_list
            sub_list = []
        else:
            sub_list.append(item)
    yield sub_list
Run Code Online (Sandbox Code Playgroud)

测试代码:

data = [2,3,5,"TAG",6,7,3,2,6,"TAG",9,9,8,3]
print(list(divide_list(data, "TAG")))
Run Code Online (Sandbox Code Playgroud)

结果:

[[2, 3, 5], [6, 7, 3, 2, 6], [9, 9, 8, 3]]
Run Code Online (Sandbox Code Playgroud)