【问题标题】:Getting index out of range error when trying to pass a for loop through a list [duplicate]尝试通过列表传递for循环时出现索引超出范围错误[重复]
【发布时间】:2019-07-24 07:36:09
【问题描述】:

挑战是在不使用范围函数的情况下计算列表中元素的乘积。

这是我的程序:

def prod(L):
    a = 1
    for i in L:
        a *= L[i] 
    return a

我很确定当我编写 for 循环时,它应该遍历列表,但是当我运行这个程序时,我得到了索引超出范围的错误。为什么会这样?如何更改程序以使其正常工作?

提前感谢您的回复!

【问题讨论】:

  • for i in L: print(i) 看看那个输出。尝试使用[0, 1, 20]L[i] 失败的原因应该很明显;第三个值尝试从您可以清楚地看到仅包含 3 个项目的列表中获取第 21 个(不要忘记我们有 0 个索引)项目。您不能从包含 3 个项目的列表中获取位置 21 的项目
  • 使用a *= i。您正在遍历列表元素。
  • for i in L 为您提供L 中的每个,而不是L 中的每个索引。只需执行a *= i,而不是a *= L[i] .

标签: python


【解决方案1】:

用 i 代替 L[i]

ml = [1,2,3]

def prod(L):
    a = 1
    for i in L:
        a *= i
    return a

prod(ml)

输出:

6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    相关资源
    最近更新 更多