2017-03-11 99 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))