说你有清单
`[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']`
什么是最简单的方法来向后修剪说第二次出现';',输出
[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0]
如果您有一个列表作为输入,您可以尝试";"
从那里找到和工作的索引:
>>> L = [1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']
>>> idx = [i for (i,v) in enumerate(L) if v == ";"]
>>> L[:idx[-2]]
[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']
def get_part(lst,sep=';'):
out = []
for i in lst:
if i == sep:
yield out
out = []
else:
out.append(i)
(您已经从上一个问题中获得)。
现在,要修剪它,我们需要转换为列表:
lst = list(get_part(yourlist))
output_list = []
for part in lst[:-2]:
output_list.extend(part)
output_list.append(';')
但我之前的建议仍然有效。更好的数据结构是列表列表。