索引器错误:索引超出范围:5

2024-05-29 05:01:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在一个介绍编程类,我有一个任务,我需要接受一个列表作为参数,然后返回一个列表,其中只包含第一个列表中可被6整除的VAL。这个类使用Python,这是我认为应该起作用的,但是我一直得到一个错误。在

    def youAndThe6th(nums):
        numsNew =  []
        for x in nums:
            if nums[x]%6 ==0:
                numsNew.append(nums[x])
        return numsNew

然后当我运行类似于:

^{pr2}$

我得到并错误地说“索引器错误:索引超出范围:4”。4等于1加上最后一个指数。所以我知道它试图检查和索引不在列表中的内容,我只是不知道我的代码试图调用给定字符串的最后一个索引。在

谢谢!在


Tags: in列表for参数returnifdef编程
2条回答

首先,python列表是零索引的,即它们从0开始

修改代码:

def youAndThe6th(nums):
    numsNew =  []
    for x in nums:
        if x%6 ==0:
            numsNew.append(x)
    return numsNew

修改的代码范围:

^{pr2}$

或者我们可以用列表理解来简化我的观点

numsNew =[x for x in nums if x%6 == 0]

注意事项:

  • 当你在一个列表中循环时,你实际上是在它的内容上循环,而不是它的索引,如果你想它是索引的话,你可以使用range
  • 你的清单有四个要素 values = [ 1 , 2 , 3 , 4] index = 0 , 1 , 2 , 3 所以当你迭代列表时,你得到了值4,你得到了nums[x] == nums[4],因为列表的索引只有3,它抛出IndexError: index out of range: 4

你的问题在第四行。而不是

if nums[x]%6 == 0:

你应该有

^{pr2}$

所发生的是for语句已经给了存储在列表中的值(如x)。然后尝试获取列表的第x个值,在您的示例中,列表只有4个值,因此请求值4超出范围(因为python开始以0计数)。在

相关问题 更多 >

    热门问题