2012-09-19 3 views
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]

+2

? 다른 * 문자열 *을 가져 오시겠습니까? –

답변

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

하지만 내 이전의 조언은 여전히 ​​유효 :

지금, 그것을 트림, 우리는 목록으로 변환해야합니다. 더 나은 데이터 구조는 목록의 목록입니다.

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, ';'] 
+0

좋은 소식입니다. 나는 그것을 생각했으면 좋겠다. – mgilson