0

リストを持っているとしましょう

`[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']`

これを後方にトリムして ';' の 2 番目の出現を出力する最も簡単な方法は何ですか?

[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 に答える