2017-11-22 8 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]のインデックスエラーを与えることは観察されたが、1つだけの要素を有している観察しました。 len(observed) 1.


オリジナル回答で、ある
:エラーに基づいて
、観察があなたのコードにアサーションを追加2.

0

の最小の長さと反復可能であることを確認してください。

assert(len(observed) > 1) 

は、配列が十分に長いことを保証します。

関連する問題