如何在Python for循环中正确使用索引i解决列表乘积计算报错
错误原因
你的代码有3处核心问题,直接触发报错的是第一处:
- 循环遍历对象写错:
for i in list中的list是Python内置的列表类型,属于类型对象,不是可遍历的序列,因此抛出'type' object is not iterable错误。 - 列表长度获取语法错误:
len是Python内置的长度计算函数,必须传入目标列表作为参数才能返回长度值,直接写len无法获取第三个列表的长度,后续运行也会报错。 - 循环逻辑不符合Python语法:手动初始化
i = 0、在循环内执行i = i + 1是其他语言的循环写法,Python的for循环会自动给迭代变量赋值,手动修改i值反而会造成索引错位。
修正后可运行代码
# 替换为你实际的三个列表,注意保证三个列表长度一致,避免索引越界 list1 = [2, 3, 4] list2 = [5, 6, 7] list3 = [8, 9, 10] list_length = len(list1) for i in range(list_length): product = list1[i] * list2[i] * list3[list_length - (i + 1)] print(product)
代码逻辑说明:通过range(list_length)生成从0到列表长度减1的所有合法索引,循环中每次取list1、list2第i位的元素,再取list3倒数第i+1位的元素,计算三者乘积后输出。如果无法保证三个列表长度一致,可以在循环前加长度判断,避免触发索引越界错误。
内容的提问来源于stack exchange,提问作者Daniel Chuntash
相关产品推荐
相关产品推荐

