我有一个列表是:
[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)
任何人都可以帮我理解我做错了什么,并提出一些修复建议吗?
使用如下发生器时,这是相当直接的:
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)