Python

파이썬 for문 - 제어문

하카데미 2022. 12. 23. 10:33

제어문 중 하나인 for문은 반복문이다.

문자열, 리스트, 튜플, 딕셔너리 등 iterable(반복 가능한) 자료형에서 그 길이만큼 수행하곤 한다.


for문의 구조는 다음과 같다.

for 변수 in 반복가능한 자료형:
    수행할 문장

 

예제를 통해 for문을 이해해보자.

코드와 해당 코드의 출력 결과를 확인하는 순서로 설명하고자 한다.

 

먼저 문자열이다.

문자열은 인덱스를 갖고 있으며, iterable 자료형이다.

따라서 in 다음에 넣을 수 있는 자료형이다.

문자열을 활용한 for문 예제를 살펴보자.

# 문자열
for n in 'abc':
    print(n)

문자열 for문 예제를 통해 for문의 작동방식을 파악했을 수 있을 것같다.

좀더 자세한 설명이 필요하다면 아래의 for문의 실행 순서를 살펴보자.

for문 실행 순서

for문에 대한 파악이 어느정도 되었을 것이다.

 

다음은 리스트와 튜플을 활용한 예제이다.

# 리스트
list_ex = [1, 2, 3]
for ex in list_ex:
    print(ex)

 

# 튜플
tuple_ex = ('t','u','p','l','e')
for ex in tuple_ex:
    print(ex)

 

딕셔너리의 for문은 여러 방식으로 사용할 수 있다.

딕셔너리는 키와 값을 갖고 있다고 했다.

키만 가지고 for문을 사용할 수도 있고,

값만 가지고도 할 수 있다.

둘다 필요한 경우도 마찬가지이다.

 

딕셔너리를 문자열, 리스트, 튜플의 예제와 같이 for문을 사용하게 될 경우부터 살펴보자.

# 딕셔너리
dict_ex = {'id':'hacademi', 'city':'seoul'}
# 예제 1
for ex in dict_ex:
    print(ex)

 

ex에 키, 값이 담긴 게 아니라 키만 담겼단 의미다.

그렇다면 키와 값을 모두 가져오려면 어떻게 해야할까?

딕셔너리에는 items()라는 함수가 있다.

items()는 키와 값을 쌍으로 보여준다.

이를 활용한 예제는 아래와 같다.

 

ex 안에는 키와 값이 쌍으로 들어 있다는 것을 확인할 수 있다.

다음 예제를 살펴보자.

# 예제 2
for key, value in dict_ex.items():
    print(key, value)

for와 in사이에 변수가 2개를 확인할 수 있다.

items()에는 (키, 값)이 담겨있다고 했다.

이때 키->key, 값 -> value에 담기게 된다.

만약 변수 자리에 변수를 3개 입력하게 된다면 에러가 발생한다.

iterable자료형에서의 추출되는 개수와 변수의 개수가 같아야 한다.

 

딕셔너리에서 키만을 활용한 for문도 가능하다.

딕셔너리의 keys() 함수를 사용하면 된다.

물론, 위에서 확인한 것 같이 할 수도 있다.

# 예제 3
for key in dict_ex.keys():
    print(key)

 

values()를 통해 딕셔너리의 값에만 접근하여 for문을 사용할 수도 있다.

 

# 예제 4
for value in dict_ex.values():
    print(value)


  

for문과 자주 쓰이는 함수들을 소개한다.

위의 예제를 통해, 혹은 for문을 사용하다 보면 '인덱스'가 필요한 순간이 있다.

그럴때 사용할 수 있는 함수가 enumerate()이다.

문자열 예제에 enumerate()를 활용해보자.

# enumerate()
ex = 'abc'
for i, e in enumerate(ex):
    print(i, e)

i에 0부터 들어왔음을 확인할 수 있다.

 

다음은 range()이다.

범위를 정할 수 있다.

# range()
for x in range(5):
    print(x)

for문과 range()를 사용한 대표적인 예제로는 구구단이 있다.

구구단 예제 코드는 다음과 같다.

for x in range(2, 10):
    for y in range(1, 10):
        print(f'{x} * {y} = {x*y}')

구구단 결과 일부