seq_sum = []
for i in range(len(sequence)):
seq_sum[i] = sequence[i] + inv_sequence[i]
print (seq_sum)
当我尝试运行此代码时,它会返回错误:列表分配索引超出范围。我该如何解决这个问题? sequence和inv_sequence是整数数组。
答案 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
。
扩展列表以使其更大,主要是通过append
,extend
或slice
作业完成的。由于按顺序访问元素,seq_num.append
是解决此问题的最佳方式。
那是:
seq_sum[i] = sequence[i] + inv_sequence[i]
应改为:
seq_sum.append(sequence[i] + inv_sequence[i])