リストを持っているとしましょう
`[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]
入力としてリストがある場合は、のインデックスを見つけて、";"
そこから作業することができます。
>>> 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(';')
しかし、私の以前のアドバイスはまだ有効です。より優れたデータ構造は、リストのリストです。