본문 바로가기

programming/python

[ python 친해지기 #10 ] 파이썬 제어문 (for 반복문)

[ python 친해지기 #10 ] 파이썬 제어문 (for 반복문)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬의 제어문 중 for 문에 대해서 알아보도록 하겠습니다.

 

for 문은 앞시간에 배운 while 문과는 다르게 다양하게 사용할 수 있는데요.

 

천천히 살펴보면서 따라와 주세요.

 

시작합니다.

 

python-logo
파이썬 로고


for 반복문의 구조

 

리스트의 요소가 차례대로 변수에 대입된 상태에서 수행할 동작이 반복됩니다.

 

즉, 요소의 개수만큼 반복이 이루어집니다.

 

for 변수 in (리스트 or 튜플 or 문자열):
    수행할 동작
    수행할 동작
    수행할 동작
    ...
    ....
    .....

 

예시를 통해 다양한 for 문을 살펴봅시다.

 

리스트를 사용하는 for 문

# 리스트를 사용한 for 문

score_list = [10, 20, 30, 40]
cnt = 0

for x in score_list:
    cnt += 1
    print(f"{cnt}번의 점수는 {x}")

# 출력 결과
1번의 점수는 10
2번의 점수는 20
3번의 점수는 30
4번의 점수는 40

 

튜플을 사용하는 for 문

# 튜플을 사용하는 for 문

grade_tuple = ('f','d','c','b','a','a+')

print('학점의 종류')

for x in grade_tuple:
    print(x)

# 출력 결과
학점의 종류
f
d
c
b
a
a+

# 리스트와 튜플이 같이 쓰인 for 문

tuple_list = [('a',1), ('b',2), ('c',3)]

for x, y in tuple_list:
    print(f"{x}는 {y}번째 알파벳")
    
# 출력 결과
a는 1번째 알파벳
b는 2번째 알파벳
c는 3번째 알파벳

 

문자열을 사용하는 for 문

# 문자열을 사용하는 for 문

string = 'abcdefghijklmnopqrstuvwxyz'
cnt = 0
for x in string:
    cnt += 1
    print(f"{x}는 {cnt}번째 알파벳")

# 출력 결과
a는 1번째 알파벳
b는 2번째 알파벳
c는 3번째 알파벳
------생략------
w는 23번째 알파벳
x는 24번째 알파벳
y는 25번째 알파벳
z는 26번째 알파벳

 

3가지 예제 모두 다 for 문에 사용되는 (리스트 or 튜플 or 문자열)에 의해 반복 횟수가 정해집니다.

 


for 너도 처음으로 돌아가! continue

 

while 문을 배우면서 continue의 동작과 사용 방법에 대해서 살펴본 적이 있습니다.

 

[ python 친해지기 #9 ] 파이썬 제어문 (while 반복문)

 

while 문을 모르시거나 기억이 안나시는 분들은 링크를 참고해주세요.

 

for 문의 continue 또한 같은 동작을 합니다. 간단한 예시를 통해 이해해 봅시다.

 

# for 문의 continue 사용법
import random

random_list = []
cnt = 0

while cnt < 7: # 랜덤한 숫자 6개를 리스트에 채운다.
    cnt += 1
    random_list.append(random.randrange(1, 100))

for x in random_list: 
    if x % 2 == 0: # 홀수만 출력하려고 continue 사용
        continue
    print(x)
# 출력 결과
3
53
29
47
랜덤이기 때문에 본인의 출력 결과와 다를 수 밖에 없습니다.

 

continue의 동작은 한결같네요.


리스트를 만들어주는 range

 

range 함수는 for 문의 단짝친구 같은 느낌의 함수입니다.

 

for 문을 작성할 때 정말 자주 쓰이는 함수이기 때문에 사용법을 잘 익혀두시길 바랍니다.

 

예제를 보면서 이해해 봅시다.

 

# range 함수와 for 문

# 1부터 10까지의 합을 구하라
sum = 0

for i in range(1,11):# 1<=i<11 즉, i에는 차례대로
    sum = sum + i    # 리스트[1,2,3,4,5,6,7,8,9,10]의 요소가 대입됨
    
print(sum)

# 출력 결과
55

 

다른 사용법은 리스트 요소의 개수를 파악해 range함수의 파라미터로 사용하는 것인데 예제로 살펴보시죠.

 

# 또 다른 range 함수의 사용법

gender = ['남', '여', '여', '남', '남', '여']

for i in range(len(gender)): # range(6)과 같은 의미
    print(gender[i])         # i에는 0에서 5까지의 숫자가 차례대로 대입됨

# 출력 결과
남
여
여
남
남
여

리스트 내포

 

리스트 내포란 for 문을 리스트 안에 내포시켜서 사용하는 방법을 말합니다.

 

기본적인 구조는 다음과 같습니다.

 

[표현식 for 변수 in 인덱싱가능한객체 (if 조건식)]
괄호로 묶인 if 조건식은 생략이 가능합니다.

 

인덱싱이 가능한 객체에는 대표적으로 리스트, 튜플, 문자열이 있습니다.

 

말로만 봐서는 이해하기 어려울 테니 예제를 보면서 리스트 내포에 대해 살펴봅시다.

 

# 리스트 내포 없이
# 1부터 50까지를 포함한 리스트 만들기
test_list = []

for i in range(1, 51):
    test_list.append(i)
print(test_list)

# 출력 결과
[1, 2, 3, 4, 5, 6, --생략-- 47, 48, 49, 50]

# 리스트 내포를 사용하면 1줄로 리스트 만들기 가능
test_list = [i for i in range(1, 51)]
print(test_list)

# 출력 결과
[1, 2, 3, 4, 5, 6, --생략-- 47, 48, 49, 50]

 

리스트 내포를 사용하면서 if 문을 이용해 조건까지 달아봅시다.

 

# 조건을 가진 리스트 내포 예제

# 1에서 50까지의 숫자 중 짝수인 수로 이루어진 리스트 만들기

test_list = [i for i in range(1, 51) if i % 2 == 0]
print(test_list)

# 출력 결과
[2, 4, 6, 8, 10, 12, --생략-- 42, 44, 46, 48, 50]

 

리스트 내포를 사용하면 복잡한 조건의 리스트 만들기도 아주 수월해집니다.


여기까지 파이썬 제어문 중 for 반복문에 대해서 알아보았습니다.

 

우리는 파이썬 친해지기 시간을 통해 파이썬의 자료형, if 문, while 문, for 문에 대해 공부했습니다.

 

이 정도까지만 알고 계셔도 원하는 동작을 하는 프로그램을 만드는데 문제는 없을 것으로 보입니다.

 

자신만의 프로그램을 만들어 보다 보면 실력도 늘고 공부가 필요한 부분이 어디인지 명확해질 것입니다.

 

배울 내용은 아직 많이 남아있지만 현재 알고 있는 지식만으로도 충분히 가능하니까 도전해 보세요!!

 

다음 시간에 만나요. 감사합니다.

반응형