如何修复Python数组相乘时出现的IndexError: list index out of range错误
问题排查
报错行:
vc = [a_list[i] * b_list[i] for i in range(len(a_list))]
报错类型:IndexError: list index out of range
错误根源
- 乘法计算代码放置位置错误:你将逐元素相乘的逻辑放在了读取第二个数组元素的内层循环中,每输入1个b数组元素就触发一次全量乘法计算。此时b_list的长度仅有1,而a_list的长度为你输入的n,遍历a_list长度的索引时必然会访问到b_list不存在的索引位置,触发越界。
- 存在隐藏残留问题:代码未在每轮计算完成后清空b_list,下一轮输入新数组时会残留上一轮的元素,导致后续计算结果出错。
修复后代码
a_list = [] b_list = [] count = 0 while count != -1: n = int(input("1. array size : ")) print("1. array elements") for i in range(0, n): ele = int(input()) a_list.append(ele) print(a_list) m = int(input("2. array size : ")) if n != m: print("create arrays at the same size") a_list.clear() count += 1 else: print("2. array elements:") for i in range(0, n): elee = int(input()) b_list.append(elee) print(b_list) # 所有元素读取完成后再执行逐元素相乘 vc = [a_list[i] * b_list[i] for i in range(len(a_list))] print("Last List: " + str(vc)) # 清空两个数组,避免下一轮计算残留旧数据 a_list.clear() b_list.clear() count+= 1
内容的提问来源于stack exchange,提问作者user17097848
相关产品推荐
相关产品推荐

