Part 24. 파이썬의 반복문
for 반복문(for loop)
정해진 횟수만큼 실행문을 반복할 수 있는 반복문입니다. range와 함께 사용하여 반복 횟수를 정할 수 있습니다. 가령, range(N)의 경우 0부터 N-1까지 반복합니다.
# 반복문( loop)
print('for 반복문')
print('range를 이용한 for 문')
for i in range(10) : #0부터 N-1까지 반복
print(i, i**2)
for i in range(10, 20) : #N부터 M-1까지 반복
print(i, i**2)
for i in range(2, 20, 2) : # N부터 M까지 : 증분
print(i)
print()
print('리스트를 이용한 for문')
x= [10, 20, 30, 40, 50, 60]
for i in x :
print(i, end=' ')
print()
print()
print('튜플을 이용한 for문')
x= (10, 20, 30, 40, 50, 60)
for i in x :
print(i, end=' ')
print()
print()
print('집합을 이용한 for문')
x= {10, 20, 30, 40, 50, 60}
for i in x :
print(i, end=' ')
print() # 집합의 경우 순서가 뒤죽박죽
print()
print('딕셔너리를 이용한 for문')
x= {'apple' : 100, 'mango' : 200, 'pear' : 300}
for i in x :
print(i, end=' ')
print() # 그냥 for문을 쓰면, 키 값이 출력된다.
for i in x.keys() :
print(i, end=' ')
print() # keys를 통해 명시할 수 있다.
for i in x :
print(f'{i}:{x[i]}', end=' ')
print()
for a,b in x.items():
print(f'{a} : {b}', end = ' ')
print()
for i in x.values():
print(i, end=' ')
print()
결과값
range를 이용한 for 문
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
11 121
12 144
13 169
14 196
15 225
16 256
17 289
18 324
19 361
2
4
6
8
10
12
14
16
18
리스트를 이용한 for문
10 20 30 40 50 60
튜플을 이용한 for문
10 20 30 40 50 60
집합을 이용한 for문
50 20 40 10 60 30
딕셔너리를 이용한 for문
apple mango pear
apple mango pear
apple:100 mango:200 pear:300
apple : 100 mango : 200 pear : 300
100 200 300
Process finished with exit code 0
중첩된 for 문
앞서서 if 문을 중첩해서 사용했듯이, for 문도 중첩하여 사용할 수 있습니다. N번 반복하는 반복문과 M번 반복하는 for문을 중첩할 경우, 전체 N X M 번 반복되게 됩니다. 그리고 더 깊이가 깊은 for 문이 먼저 동작하게 됩니다.
# 중첩된 for 문(nested for)
for i in range(1,10): # 중첩된 for문을 이용한 구구단 출력
print(f'{i}단 시작')
for j in range(1,10):
print(f'{i}x{j}={i*j}') # 9x9 = 81번 동작하는 loop 생성
Zip을 이용한 for 문
zip을 이용하면 여러 개의 반복자를 동시에 반복할 수 있습니다. 중첩된 for 문과 달리, N X M번 동작하는 것이 아니라 , N과 M중 짧은 것이 반복됩니다.
# Zip을 이용한 for 문
names = ['jane', 'thomas', 'chris']
scores = ['100', '80', '60']
print('nested for 문으로 잘못 구현한 경우')
for name in names :
for score in scores:
print(f'{name}의 점수는 {score}입니다.')
print('zip을 이용한 for문으로 제대로 구현')
for name, score in zip(names, scores):
print(f'{name}의 점수는 {score}입니다.')
Enumerate를 이용한 for 문
반복자에서 반복하면서 현재 반복 횟수도 필요할 때 사용하는 문법입니다. 데이터를 다룰 때, 인덱스와 값을 함께 얻기 위해 많이 사용합니다.
# Enumerate를 이용한 for 문
x= ['a', 'b', 'c', 'd']
for c in x :
print(c)
for i, c in enumerate(x):
print(f'x[{i}] {c}')
print()
for i in range(len(x)):
print(f'x[{i}] {x[i]}')
While 반복문
조건이 참인 동안 실행문을 반복하는 반복문입니다. 조건이 항상 참인 경우, 무한 루프가 됩니다. 반복문이 종료되기 위해서는 실행문 내에서 조건이 변경되어야 합니다.
반복문의 제어문 (Control Statement)
실행문 내에서 반복문의 동작을 제어하는 문법 요소입니다.
break - 즉시 반복문을 종료하고 다음 라인으로 진행합니다.
continue - 즉시 실행문을 마치고 다음 반복을 진행합니다.
# 반복문의 제어문(Control Statement)
for i in range(10):
if i==2 : #i가 2일 때 true가 되면서 break가 동작
print(f'i가 {i}일 때, break')
break
print(i)
print()
for i in range(10):
if i==2 : #i가 2일 때 true가 되면서 continue가 동작
print(f'i가 {i}일 때, continue')
continue
print(i)
결과값
0
1
i가 2일 때, break
0
1
i가 2일 때, break
3
4
5
6
7
8
9
Process finished with exit code 0
지능형 리스트와 딕셔너리
for문과 유사한 문법을 이용하여 리스트와 집합, 딕셔너리를 간결하게 생성할 수 있습니다.
# 지능형 리스트(list comprehension)
x_list = [x for x in range(10)]
print(x_list)
x_list2 = [x*2 for x in range(10)]
print(x_list2)
x_list3 = [x*2 for x in range(10,20,2)]
print(x_list3)
y_list = ['a','b','c','d']
y_list = [f'{y*3}'for y in y_list]
print(y_list)
zeros = [0 for _ in range(100)]
print(zeros)
# 지능형 딕셔너리(dictionary comprehension)
x_dict = {x : x+2 for x in range(5)}
print(x_dict)