0

说你有清单

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

4

2 回答 2

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, ';']
于 2012-09-19T11:47:32.067 回答
1
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(';')

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

于 2012-09-19T11:47:08.907 回答