2013-03-14 2 views
1

크기 155의 배열이 있습니다. 내 프로그램은 단어를 입력 한 다음 배열에서 단어를 검색합니다. 그러나 배열의 마지막 단어 인 '176'을 입력하면 list index out of range 오류가 발생합니다. 이유가 무엇입니까?배열리스트 인덱스가 범위를 벗어났습니다.

i = resList.index(resiID) # --searchs list and give number where found, for last word gives 155 
print len(resultss) # --prints 155 
colour = resultss[i] # --error given on this line 
+0

저는 'i> = 155'라고 내기하고 있습니다. 그리고'resList' (인덱스를 얻은 곳)와'resultss' (인덱스를 사용하는 곳) 사이의 관계는 무엇입니까? – hughdbrown

+0

틀린 점은 그것을 프린트하고 155 – miik

+0

수정 : 'i> = 155'입니다. – hughdbrown

답변

1

귀하의 인덱스가 범위를 벗어났습니다. 다음 목록 인덱스가 작동하는 방법입니다

>>> a = list(range(10)) 
>>> a 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> i = a.index(9) 
>>> i 
9 
>>> a[i] 
9 
>>> a[10] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 

인덱스의 길이는 다음의 범위 0..i-1의 모든 인덱스를 사용할 수 i 경우. 마지막으로 유효한 색인은 len(mylist) - 1입니다.

155가 범위를 벗어났습니다. 하나의 목록/iterable (resList)에서 색인을 가져 와서 다른/작은 목록/iterable (resultss)의 색인으로 사용하기 때문일 수 있습니다.

2

예상되는 동작입니다. lenxlist 인 경우 x 색인은 정의되지 않습니다.

예 :

lst = [0,1] 
print len(lst) # 2 
print lst[0] # 0 
print lst[1] # 1 
print lst[len(lst)] #error 
+0

부록으로 : 이것은 파이썬리스트가 [zero-indexed] (http : // en.wikipedia.org/wiki/Zero-based_numbering). – thegrinner

관련 문제