인프런 커뮤니티 질문&답변

태 한님의 프로필 이미지
태 한

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

문제를 풀며 가장 자연스럽게 익숙해지는 파이썬 기본: 반복문 활용2

반복문 38번 질문있습니다.

작성

·

167

0

- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)
- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다
- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다
- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.

 

리스트변수에서 음수 데이터를 삭제하고 양수만 가지는 리스트 변수를 출력하는 문제입니다.

저는 답변을 :

num_list=[0,-11,31,22,-11,33,-44,-55]

for num in num_list:

if num<0:

num_list.remove(num)

print(num_list)

이렇게 작성하였는데

출력값이 [0, 31, 22, 33, -55]

이렇게 나오더라구요 ㅠㅠ 마지막에 -55는 왜 들어가버린거죠..?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

태한님, 질문 주신 내용과 관련하여 이미 이 과정에서 다른 학습자들도 유사한 질문을 한 적이 있어 관련된 답변을 찾을 수 있었습니다.

이 질문에 대한 핵심적인 문제는 리스트를 순회하면서 동시에 그 리스트의 원소를 제거할 때 발생합니다. 리스트에서 요소를 제거하면, 리스트의 크기가 줄어들며, 이로 인해 인덱싱이 달라지면서 일부 요소가 건너뛰어진 상태로 처리되지 않는 현상이 발생합니다.

즉, 리스트에서 반복문을 사용하여 요소를 삭제하는 경우, 현재 처리하고 있는 요소 뒤에 있는 요소들의 인덱스가 하나씩 당겨집니다. 이 과정에서, 반복문이 다음 요소로 넘어가면서 삭제되지 않고 건너뛰어지는 요소들이 발생할 수 있습니다.

이 문제를 해결하는 한 가지 방법은 리스트를 순회할 때 새로운 리스트를 생성하여, 조건에 맞지 않는(즉, 삭제하지 않을) 요소들만 새로운 리스트에 추가하는 것입니다. 그 다음, 원본 리스트 대신 새로운 리스트를 사용합니다.

다른 학습자들의 유사한 질문에 대한 답변은 아래 링크에서 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

태 한님의 프로필 이미지
태 한
질문자

감사합니다

태 한님의 프로필 이미지
태 한

작성한 질문수

질문하기