changmin6928   2년 전

value error 가 뜹니다.

7번째 줄 nums.remove(i) 에서 ValueError : list.remove(x) : x not in list 라고 에러메세지가 뜹니다.

3번째 줄에서 for문을 사용해 리스트nums 의 요소들을 그대로 i 에다 사용하였고, 

그 i를 그대로 7번째 줄에서 remove함수로 nums리스트에서 제거하려 하는건데, 왜 에러메세지에서 i가 list안에 없다고 하는걸까요?

아니면 혹시 다른 부분에서 제가 놓치고 있는 잘못된 구문이 있는 건가요?

djm03178   2년 전

i를 나누어떨어지게 하는 j가 여럿 있을 수 있습니다. 그러면 그 횟수만큼 7번째 줄에서 i를 제거하려고 할 텐데, 한 번 제거한 후로는 이미 리스트에 없기 때문에 두 번째 제거를 시도할 때 문제가 생깁니다.

ghghgh777   2년 전

위 댓글과 더불어 다른 문제도 생각해보셔야 합니다.

1) i > 1일 때만 소수 판별 로직을 돌리고 nums에서 제거한다면 1을 소수로 카운트하게 되지 않을까요?
2) 리스트 순회 도중 remove를 수행하면 원하시는 결과를 얻지 못할 가능성이 높습니다. 아래와 같은 코드를 확인해보세요.

changmin6928   2년 전

djm03178님 답변에 감사드립니다. break를 사용하던가 해서 for문을 나올 수 있도록 수정해 보겠습니다.

ghghgh777님도 답변 감사합니다. list로 for문을 돌릴때 remove사용에 대해서 저런 문제가 있을 것이라고는 생각도 못해봤었습니다.

구글링 통해서 왜 그런 말씀을 하셨는지 이제 알겠습니다. 앞으로 리스트 순회 도중  remove사용을 지양해야겠습니다. 감사합니다!!

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