当我尝试运行我的代码时,我似乎运行了一个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
错误: v = lambda s:self.transition(0,s)* self.emission(s,observed [1])IndexError:列表索引超出范围
答案 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。
原答案:
根据错误,确保observe是一个迭代,最小长度为2.
答案 1 :(得分:0)
在代码中添加断言。
assert(len(observed) > 1)
将确保数组足够长。