2017-03-11 5 views
-2

ここでは私のコードです:(のpython)私のコードの何が問題になってい

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)) 
関連する問題