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

함문주님의 프로필 이미지
함문주

작성한 질문수

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

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

38번 문제 질문드립니다 ㅜ

작성

·

242

0

  • 다음 리스트 변수에서 음수 데이터를 삭제하고, 양수만 가진 리스트 변수로 만들고, 해당 변수를 출력하세요.

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

이러한 문제입니다.

제가 낸 해답.
a = [0, -11, 31, 22, -11, 33, -44, -55] for i in a: if i<=0: a.remove(i) print(i)


답이 [0,31,22,-44,-55]가 나옵니다...
개념이 안잡혀있는건지.... 왜 이렇게나오는지 도저히 모르겠네요 ㅠㅠ

답변 1

1

안녕하세요. 함문주님!

문주님이 작성해주신 코드에서 for문을 순회하면서 만약 해당 값이 음수라는 것이 확인되면 리스트에서 값을 삭제합니다.

그렇게 진행하게 된다면, 음수일 때 값이 삭제되므로 -11에서 삭제가 일어납니다.

(문주님 코드에 i <= 0으로 되어있는데, i<0으로 수정했다고 가정한 후에 과정을 아래에 작성했습니다.)

이러한 방식으로 계속 진행하다보면,

  • 현재 인덱스 : 0
    값 : 0 (통과)
    현재 리스트 : [0, -11, 31, 22, -11, 33, -44, -55]
  • 현재 인덱스 : 1
    값 : -11 (삭제)
    현재 리스트 : [0, 31, 22, -11, 33, -44, -55]
  • 현재 인덱스 : 2
    값 : 22 (통과)
    현재 리스트 : [0, 31, 22, -11, 33, -44, -55]
  • 현재 인덱스 : 3
    값 : -11 (삭제)
    현재 리스트 : [0, 31, 22, 33, -44, -55]
  • 현재 인덱스 : 4
    값 : -44 (삭제)
    현재 리스트 : [0, 31, 22, 33, -55]
  • 리스트 길이가 5이고, 마지막 인덱스가 4이므로 for문 종료

위와 같은 방식으로 진행되기 때문에, 생각하시는대로 답이 나오지 않았던 것입니다.

for문 안의 조건문을 살짝 변형하면 답 얻으실 수 있을 것 같습니다.

혹시 궁금한 점 있으시면 댓글 남겨주세요.

도움이 되셨으면 좋겠습니다. :)

함문주님의 프로필 이미지
함문주

작성한 질문수

질문하기