currentList = [1,2,3,4,5] for element in currentList if element = 3 currentList.remove(element)
위와 같은 코드는 실제로 정상적인 의도대로 사용할수 없다
이는 c++ 의 vector 에서의 iterator 로 for문을 loop 도는중 erase 할때와 같은 경우라고 이해할 수 있는데
iterator terrmination 상태가 되어 버린다
다시 말하면 loop 를 도는 근간을 흔들어 버리는 행위를 루프를 도는중에 한다
라고 이해 하면 되지 않을까 싶다
python 의 경우 위의 코드에서
currentList = [1,2,3,4,5] for element in currentList[:] if element = 3 currentList.remove(element)
[:]를 붙여주게 되면 실제 loop 를 돌때는 currentList 의 복사본을 이용해 loop 를 돌게 되어 for 루프의 연속성은 유지 하되 내부에서의 컨테이너로의 삽입/삭제는 원본에 영향을 주게 된다
댓글 남기기