修剪列表到分隔符

时间:2012-09-19 11:36:25

标签: python list trim delimiter

说你有名单

`[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]

2 个答案:

答案 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(';')

但我之前的建议仍然有效。更好的数据结构是列表列表。