Python for 循环:“列表索引超出范围”错误?

Posted

技术标签:

【中文标题】Python for 循环:“列表索引超出范围”错误?【英文标题】:Python for loop: "list index out of range" error? 【发布时间】:2017-02-17 18:43:22 【问题描述】:

我有一个代码,基于 Project Euler 的问题 3:“13195 的质因数是 5、7、13 和 29。数字 600851475143 的最大质因数是多少?”

下面有一个我认为可以工作的代码,但第 9 行 (for k in range(2,res[j]):) 不断返回错误:“IndexError: list index out of range”。当我通过我的 for 循环时,我似乎没有修改我的列表,所以我不确定出了什么问题。

def find_primes(num):
    res = []
    print(num)

    for i in range(2,num):
        if num%i==0:
            res.append(i)

    for j in res:
        for k in range(2,res[j]):
           if res[j]%k==0:
               res[j]=False
    list(filter((False).__ne__, res))

    m = max(res)
    return(m)

有人知道我哪里出错了吗?

谢谢!

【问题讨论】:

您的代码没有正确的缩进。请更正它,以便我们为您提供帮助! 因为res[j] 转到res 中的第j 项,而res 的数字大于它的长度。 您应该查看有关循环构造的教程。 @Arman 对,谢谢! (False).__ne__... 你想做什么?因为这不是方式 【参考方案1】:

你可能打算这样做:

for j in range(len(res)):
    for k in range(2,res[j]):

使用for j in res 将遍历res 元素。

【讨论】:

你的意思是for j in range(len(res)): 你说得对,我没想到。非常感谢您的帮助!

以上是关于Python for 循环:“列表索引超出范围”错误?的主要内容,如果未能解决你的问题,请参考以下文章

Python循环:列表索引超出范围

Networkx:通过循环遍历节点列表添加属性时,IndexError:列表索引超出范围

我想异常处理“列表索引超出范围”。

k元组排序中的python列表索引超出范围

当我遍历我的列表时,返回列表索引超出范围

Python - 索引错误 - 列表索引超出范围