Python错误:索引超出范围

时间:2016-09-27 10:52:41

标签: python python-3.x

seq_sum = []
for i in range(len(sequence)):
    seq_sum[i] = sequence[i] + inv_sequence[i]
print (seq_sum)

当我尝试运行此代码时,它会返回错误:列表分配索引超出范围。我该如何解决这个问题? sequence和inv_sequence是整数数组。

2 个答案:

答案 0 :(得分:8)

seq_sum[i]会提升IndexError,因为seq_sum列表为空。您应该使用append代替:

seq_sum = []
for i in range(len(sequence)):
    seq_sum.append(sequence[i] + inv_sequence[i])
print(seq_sum)

使用列表理解,您可以使用更漂亮的代码获得相同的结果:

seq_sum = [seq_elem + inv_elem for seq_elem, inv_elem in zip(sequence, inv_sequence)]

你也可以使用map但有些人会认为它的可读性:

import operator
seq_sum = list(map(operator.add, sequence, inv_sequence))

答案 1 :(得分:1)

您已将seq_sum声明为空列表。然后,您尝试在0以外的位置编入索引,这会产生IndexError

扩展列表以使其更大,主要是通过appendextendslice作业完成的。由于按顺序访问元素,seq_num.append是解决此问题的最佳方式。

那是:

seq_sum[i] = sequence[i] + inv_sequence[i]

应改为:

seq_sum.append(sequence[i] + inv_sequence[i])