2017-03-11 90 views
-2

这里是我的代码:什么是错我的代码(蟒蛇)

def extractEachKth(inputArray, k): 
    n = [] 
    for i in inputArray: 
     n.append(i) 
    for i in range(1, len(n) + 1): 
     if i % k == 0: 
      n.remove(n[i-1]) 
    return (n) 
    print (extractEachKth([1,2,3,4,5,6,7,8,9,10],3)) 

,这里是我的错误:

Traceback (most recent call last): 
    File "C:/Users/Harry/Documents/randompythonprograms/editable.py", line 9, in <module> 
    print (extractEachKth([1,2,3,4,5,6,7,8,9,10],3)) 
    File "C:/Users/Harry/Documents/randompythonprograms/editable.py", line 7, in extractEachKth 
    n.remove(n[i-1]) 
    IndexError: list index out of range 
+1

将其更改为'为我(1,LEN(N))' – rassar

+0

我们不知道你想要你的代码做什么,所以我们很难为你提供帮助。 – byxor

+3

'n.remove(n [i-1])'这是造成这个问题的原因,因为你从列表中删除值并循环到'n',所以它不会有相同的大小,即列表的长度将会减少并且会给你'索引超出界限的错误',你的范围是正确的 –

回答

0

此:n.remove(n[i-1])原因造成的问题,因为你从列表中删除值并循环,直到len(n),所以它不会有相同的大小,即列表的长度将减少,并会给你index out of bound error,你的范围是正确的。

您可以通过更新N当你删除一个值,这样解决问题:在范围

def extractEachKth(inputArray, k): 
    n = [] 
    for i in inputArray: 
     n.append(i) 
    i = 1 
    N = len(n) + 1 
    while i < N: 
     if i % k == 0: 
      n.remove(n[i-1]) 
      N = len(n) + 1 
      # or simply 
      # N -= 1 
     i += 1 
    return (n) 
print (extractEachKth([1,2,3,4,5,6,7,8,9,10],3))