2017-11-22 9 views
-1

코드를 실행하려고하면 IndexError와 함께 실행되는 것 같습니다.코드를 실행하려고하면 IndexError와 함께 실행됩니다.

def _init_trellis(self, observed, forward=True, init_func=identity): 
    trellis = [ [None for j in range(len(observed))] 
         for i in range(len(self.real_states) + 1) ] 

    if forward: 
     v = lambda s: self.transition(0, s) * self.emission(s, observed[1]) 
    else: 
     v = lambda s: self.transition(s, self.end_state) 

    init_pos = 1 if forward else -1 

    for state in self.state_nums(): 
     trellis[state][init_pos] = init_func(v(state)) 
    return trellis 

ERROR: v = lambda s: self.transition(0, s) * self.emission(s, observed[1]) IndexError: list index out of range

+0

이 오류가 발생했을 때 매개 변수의 실제 값을 제공하면 도움이됩니다. –

답변

0

업데이트 : 당신이 색인 목록에 액세스하려고 할 때 이 발생하지만,리스트는 많은 요소가 보여줄 것을 가지고 있지 않습니다. 예
이 경우

a_list = ['a', 'b', 'c'] 
print(a_list[0] # Prints a. 
print(a_list[2] # Prints c. 
print(a_list[3] # Gives IndexError. 
'''Index of 3 means the 4th element of the list is being accessed. 
    Since the list only has 3 elements, it gives an index error.''' 

는 [1] 인덱스 에러가 관찰 수단 만 제공 한 요소를 가지고 관찰 하였다. 오류를 바탕으로
, 즉 2

0

의 최소 길이 코드에 주장을 추가로 반복 가능하다 관찰 확인하십시오입니다
len(observed) 1.


원래 대답이다.

assert(len(observed) > 1) 

은 배열이 충분히 길어 지도록합니다.