簡體   English   中英

IndexError:索引超出范圍:5

[英]IndexError: index out of range: 5

因此,我在一個入門編程類中,我有一個分配,需要在其中添加一個列表作為參數,然后返回一個列表,其中僅包含第一個列表中可被6整除的值。該類使用Python,是我認為應該正常工作的內容,但我一直遇到錯誤。

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

然后當我運行類似的東西時:

     youAndThe6th([1,2,3,4])

我收到錯誤提示“ IndexError:索引超出范圍:4”。 而4只是1加最后一個索引。 因此,我知道它正在嘗試檢查和索引不在列表中的內容,只是看不到我的代碼正在嘗試調用給定字符串的最后一個索引。

謝謝!

首先,第一個python列表的索引為零,即它們從0開始

修改后的代碼:

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

修改后的代碼范圍:

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

或者我們可以使用列表理解使事情變得更容易

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

筆記:

  • 當您遍歷一個列表時,實際上是遍歷它的內容而不是它的索引,如果希望它是索引,則可以使用范圍
  • 您的列表具有四個元素values = [ 1 , 2 , 3 , 4] index = 0 , 1 , 2 , 3因此,當您遍歷列表時,得到的值是4並且執行了nums[x] == nums[4]因為列表只有最多3個索引,所以它拋出IndexError: index out of range: 4

您的問題在第4行。

if nums[x]%6 == 0:

你應該有

if x%6 == 0:

發生的情況是您的for語句已經為您提供了存儲在列表中的值(以x表示)。 然后,您嘗試獲取列表的第x個值,在您的情況下,您的列表僅包含4個值,因此要求值4超出范圍(因為python從0開始計數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM