[Python] 반복문 for
23 Jan 2020
Reading time ~4 minutes
반복문 for
리스트, 문자열 등 순회가능한 객체를 순회하면서 값을 처리할 때 사용합니다. 객체 내 모든 값을 순회하면 자동적으로 for 블록은 종료됩니다.
a = [1, 2, 3, 4, 5]
for i in a:
print(i, i ** 2)
print('Today is Sunday.')
# 출력:
1 1
1 4
1 9
1 16
1 25
Today is Sunday.
문자열의 특정 문자 출력하기
문자열 또한 for 구문 적용이 가능합니다. 이 때, 문자열을 구성하는 글자 하나하나를 순회합니다.
a = 'Data Analysis'
for character in a:
print(character)
# 출력:
D
a
t
a
A
n
a
l
y
s
i
s
# 단순 숫자형 데이터는 순회할 수 없습니다. 아래 코드를 실행하면 오류가 발생합니다.
for x in 10:
print(x)
리스트의 개별 값 출력하기
a = [1, 10, 3, 4, 5]
for num in a:
if num % 2 == 0:
print(num / 2)
else:
print('beep')
# 출력:
beep
5.0
beep
2.0
beep
딕셔너리의 아이템 출력하기
딕셔너리의 경우 기본적으로 키 값을 참조하여 순회합니다.
keys( )
함수를 이용하여 key 만 순회할 수 있습니다.values( )
함수를 이용하여 value 만 순회할 수 있습니다.items( )
함수를 이용하여 tuple형태로 키와 값을 같이 순회할 수 있습니다.
a = {'korea':'jeju', 'spain':'majorca', 'USA':'honolulu'}
for k in a:
print('key: ', k, 'value: ', a[k])
# 출력:
key: korea , value: jeju
key: spain , value: majorca
key: USA , value: honolulu
for key, value in a.items():
print(key, value)
# 출력:
korea jeju
spain majorca
USA honolulu
for value in a.values():
print(value)
# 출력:
jeju
majorca
honolulu
for i in a.items():
print(i[0], i[1], i)
# 출력:
korea jeju ('korea', 'jeju')
spain majorca ('spain', 'majorca')
USA honolulu ('USA', 'honolulu')
for 에서 index 사용하기
기본적으로 for에 리스트를 순회할 경우, 값만 추출합니다. 하지만 enumerate
함수를 사용하면 인덱스와 값 모두 사용이 가능합니다.
a = [1, 2, 3, 4, 5]
for index, num in enumerate(a):
if index > 2:
print(index, num)
# 출력:
3 4
4 5
break
for도 while과 동일하게 특정조건일 때, break를 사용하여 구문 종료가 가능합니다.
a = [100, 90, 80, 70, 60, 50]
for num in a:
if num < 80:
break
print(num)
# 출력:
100
90
80
continue
역시 while과 동일하게 특정조건을 만족하면 뒷부분 코드를 수행하지 않고, 처음으로 돌아갑니다.
a = [100, 90, 80, 70, 60, 50]
for num in a:
if num >= 60 and num <= 70:
continue
print(num)
# 출력
100
90
80
50
for 구문 중첩하기
for 구문도 if 처럼 중첩해서 사용이 가능합니다.
# for 구문을 활용하여 구구단 출력하기
for i in range(2,10):
for j in range(1,10):
print(i, 'x', j, '=', i * j)
print('\n')
# 출력:
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
(중략)
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
(연습문제) 1부터 100까지 정수 중 2의 배수 또는 11의 배수를 모두 출력하기
for i in range(1, 101):
if i % 2 == 0 or if i % 11 == 0:
print(i)
# 출력:
2
4
6
8
10
11
12
14
16
18
20
22
..
(중략)
..
88
90
92
94
96
98
99
100
(연습문제) 주어진 리스트에서 for를 사용하여 최댓값, 최솟값 찾기
a = [22, 1, 3, 4, 6, 98, 21, 55, 87, 99, 19, 20, 45]
# 처음 만나는 값을 최댓값, 또는 최솟값으로 가정하고
# 그 이후 값들과 비교하여 이후 값이 더 작으면 그것이 최솟값, 크면 최댓값으로 업데이트
_min = a[0]
_max = a[0]
for i in a:
if i < _min:
_min = i
if i > _max:
_max = i
print('최댓값: ', _max, '최솟값: ',_min)
# 출력:
최댓값: 99 최솟값: 1
(연습문제) 주어진 리스트에서 for를 사용하여 평균 구하기
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
_sum = 0
for i in a:
_sum += i
print(_sum/len(a))
# 출력:
37.0
Reference
- 패스트캠퍼스 파이썬 강의