데이터분석/Python

[Python] 반복문 while문, for문, list comprehension

안나 2023. 3. 27. 21:52

저번 포스팅에서는 조건문에 대해 공부했는데요,

이번엔 반복문에 대해 알아보겠습니다.

 

while 문

반복문은 크게 두 가지로 구분할 수 있는데, 그 중 하나가 while 문입니다.

while 문은 조건이 True일 때 그 블록 안에 해당하는 코드를 반복적으로 수행할 때 사용합니다.

 

while 문의 기본 구조는 다음과 같습니다.

while <조건문>:
    <수행할 문장 1>
    <수행할 문장 2>
    ...

예제를 보겠습니다.

while 문의 예시로 많이 쓰이는 게 '10번 찍어 안 넘어가는 나무 없다' 속담을 코드로 구현하는 건데요.

다음과 같이 적을 수 있습니다.

hit이 10번 될 때까지 계속 찍다가 10번을 찍으니 넘어가는 것을 의미합니다.

 

while 문은 조건이 True일 때 while 문 안의 코드들을 무한 반복하기 때문에

강제로 while 문에서 빠져나가는 방법도 알아야 합니다.

예를 들어, 지갑에 있는 돈을 다 쓰면 더 이상 구매할 수 없는 것처럼

구매를 멈추게 하는 코드가 break 문입니다.

 

커피 자판기 예제를 들어보겠습니다.

현재 커피가 자판기에 5개 있고 커피 한 잔에 500원이라고 합시다.

input을 통해 사용자에게 금액을 입력받고 커피가 다 떨어지면 반복문을 종료하겠습니다.

500원이면 커피를 한 잔 주고,

500원보다 적게 받으면 실패를 출력하고,

500원보다 많이 받으면 커피를 한 잔 주고 거스름돈을 돌려주는 코드를 짜보겠습니다.

이렇게 남은 커피가 0개가 되면 반복문을 빠져나올 수 있게 해주는 게 바로 break 문입니다.

 

반복문에서 특정 조건은 건너뛰고 다음 루프로 넘어가고 싶을 때는 continue 문을 쓸 수 있습니다.

예를 들어, while 문으로 1부터 10 사이의 홀수만 출력할 땐 다음과 같이 작성합니다.

 

for 문

for 문은 파이썬에서 가장 많이 쓰이는 반복문입니다.

while 문과 다르게 리스트, 튜플, 문자열의 시작부터 끝까지가 변수에 대입되어

코드가 반복된다고 볼 수 있습니다.

 

for문의 기본 구조는 다음과 같습니다.

for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장 1
    수행할 문장 2
    ...

for 문을 배울 때 가장 대표적으로 사용하는 예시가 구구단입니다.

간단하게 2단만 살펴볼까요?

위 예시는 for 문으로 만들 수 있는 구구단 2단을 3가지 방법으로 표현해본 것입니다.

첫 번째는 f-string, 두 번째는 형 변환, 세 번째는 포맷팅을 이용한 코드입니다.

 

그렇다면 구구단을 전체를 나타내려면 어떻게 해야 할까요?

위 코드와 같이 이중 for 문을 이용해서 나타낼 수 있습니다.

i가 2일 때 j가 1부터 9까지 들어가고,

끝나면 i가 3이 되는 식으로 루프가 돌아가는 것을 보실 수 있습니다.

 

for 문 안에 조건문이 들어가는 예제도 한번 보겠습니다.

예를 들어, 학생들의 점수가 담길 리스트에서 60점 이상인 학생에게만

합격을 출력하는 반복문을 만들어 보겠습니다.

 

list comprehension

마지막으로 for문을 좀 더 간단하게 표현할 수 있는 리스트 컴프리헨션에 대해 배워볼게요!

먼저 구조는 다음과 같습니다.

[표현식 for 항목 in 반복가능객체 if 조건문]

이것만 보면 무슨 말인지 모르겠죠?

 

예시를 보여드리겠습니다.

만약 for 문을 사용해서 1부터 100까지 정수 중 짝수만 리스트로 담고 싶다면 다음과 같이 할 수 있습니다.

먼저 빈 리스트를 하나 만든 뒤 for 문 안에 조건문을 넣어서

짝수만 판별해 append 함수로 빈 리스트 안에 넣어주는 작업이 필요하죠.

 

그렇다면 리스트 컴프리헨션을 이용하면 어떻게 될까요?

같은 결과인데 훨씬 짧은 코드로 표현이 가능하죠?

list comprehension을 만드는 것도 파이썬에서 자주 쓰이기 때문에

잘 알아두면 좋습니다 😊


이렇게 이번 포스팅에서는 반복문에 대해 공부했습니다.

다음 포스팅까지 조건문과 반복문 반복하기! 😉