2012-11-17 3 views
0

그래서 임의로 생성 된 숫자가 8 개 있습니다. 모두 숫자가 ct[i]입니다. ct[i+1]에 의해 참조되는 번호 (ct[i])를 추가하고 싶습니다. 그러나이 경우 범위를 벗어난 목록 인덱스가 생성됩니다. 뭐가 문제 야?목록에 두 항목을 추가 할 때 색인 오류가 발생했습니다.

for i in range(totrange): 
    tot1 = ct[i] + ct[i+1] 

totrange은 보통 8,하지만 난 유연성의 비트 싶었다. totrange 8과 ct 8 개 요소를 포함

+0

그래서 당신에 ct''에서 마지막 요소를 추가 할을 .. . 뭐? 'i'가'7' 일 때 ('totrange'가 보통'8' 일 때입니다),'ct [i + 1]'은 범위를 벗어날 것입니다. – Ryan

답변

2

이 문제를 처리하려면 인 경우 을 사용해야합니다. i+1ct의 마지막 인덱스보다 큰 값입니다.

예 :

In [30]: ct=range(5)  #ct =[0,1,2,3,4] 

In [31]: for i in range(len(ct)-1): 
    print(ct[i]+ct[i+1]) 
    ....:  
1 
3 
5 
7 

이상이 zip() 기반 솔루션, 모든 인덱스를 사용할 필요가 없습니다 사용

In [32]: for x,y in zip(ct,ct[1:]): 
    print (x+y) 
    ....:  
1 
3 
5 
7 
1

경우, 마지막 ct[i+1] 호출 범위 초과 오류 목록 인덱스를 일으키는 ct에서 9 번째 요소를 얻을하려고합니다.

totrangelen(ct) - 1보다 커야합니다.

+0

''totrange'가'len (ct) -1''보다 커야하지 않아야합니까? (그래서'i'는 결코'len (ct) -2'보다 큽니다)? –

+0

Nope. 'len ([0, 1])'은 2입니다. 즉,'(len ([0, 1]) - 1) + 1'은 범위를 벗어난 인덱스 인 2입니다. '(len ([0, 1]) - 2) + 1'은 1이므로 범위를 벗어나지 않습니다. –

+0

'range (totrange)'부분이 누락 된 것 같습니다. 만약'totrange'가'len (ct) -1' (즉, 7)이면'i' 최대 값은'6'이고'6 + 1'은 유효한'ct' 인덱스입니다. –

관련 문제