说你有名单
`[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]
答案 0 :(得分:5)
如果你有一个列表作为输入,你可以尝试找到";"
的索引并从那里开始工作:
>>> 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, ';']
答案 1 :(得分:1)
def get_part(lst,sep=';'):
out = []
for i in lst:
if i == sep:
yield out
out = []
else:
out.append(i)
(您已经从previous question获得)。
现在,为了修剪它,我们需要转换为一个列表:
lst = list(get_part(yourlist))
output_list = []
for part in lst[:-2]:
output_list.extend(part)
output_list.append(';')
但我之前的建议仍然有效。更好的数据结构是列表列表。