tmdxo12344   3년 전

line 10, in

if list1[j-1] == list1[j]:

IndexError: list index out of range

파린이입니다,, 위와같은 오류가 뜨는 이유를 모르겠어요,,

j값 프린트도 해봤는데 list range안에 값만 나오는데ㅜㅜ 왜 그럴까요..

도와주세요,,

djm03178   3년 전

말씀하신 것과 코드가 다르네요. 코드에서는 j-1번째 인덱스에 접근하지 않으니 문제가 없습니다.

tmdxo12344   3년 전

이대로 돌리면 

line 10, in

if list1[j-1] == list1[j]:

IndexError: list index out of range

이런 문제가 뜨던데요...? ㅠㅠ

djm03178   3년 전

그런 에러 메시지가 나올 수가 없습니다. 에러 메시지가 10번째 줄의 코드를 그대로 보여주고 있는데, 올리신 코드를 보면 분명히 인덱스를 j와 j+1로 접근하고 있습니다. 그런데 에러 메시지가 j-1과 j로 나올 리가 없죠.

물론 이 코드 그대로 돌려도 IndexError가 나기는 합니다. 그 이유는 s = list1이 리스트를 복사해주는 것이 아니라 같은 객체를 가리키게끔 하는 것이기 때문에 s에서 원소를 지우는 것은 곧 list1에서 원소를 지우는 것과 같기 때문입니다. 그런데 for문은 처음의 list 길이만큼 돌기 때문에 중도에 list1의 원소가 지워지며 길이가 줄어들면 나중에는 범위를 벗어난 인덱스에 접근하게 됩니다.

댓글을 작성하려면 로그인해야 합니다.