-
Notifications
You must be signed in to change notification settings - Fork 0
2.04. 내용정리: 4일차
흔한 찐따 edited this page Mar 15, 2022
·
1 revision
반복문이란 특정 조건이 참인 경우 계속해서 반복되는 구문을 나타낸 요소이며, while
, for
, 그리고 break
키워드를 통해서 반복을 끝낼 수 있다.
반복이 끝나면 무조건 수행하는 else
키워드를 사용할 수 있으며, else
키워드의 사용 여부는 선택 사항이다.
a = 1
# a가 10보다 작은 경우에는 계속 수행된다.
while a < 10:
a = a + 1
else:
print('done!')
break
키워드는 반복문을 중단시킨다.
a = 1
while a < 10:
a = a + 1
# a가 5일 경우에는 반복문을 중단한다.
if a == 5:
print('break')
break
else:
print('done!')
continue
키워드는 반복문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우 사용한다.
a = 1
while a < 10:
a = a + 1
if a % 2 == 0:
print('continue')
continue
print(a)
while
문을 좀 더 사용하기 편하고 단순하게 표현하기 위해 존재하는 문법이다.
여러 개의 요소를 가지는 컨테이너 타입, range
타입과 주로 같이 사용되며, 차례대로 요소를 순회한다.
for i in range(1, 11):
print('i:', i)
if i == 5:
print('break')
break
else:
print('done!')
또 한가지 예시로 리스트에 요소를 추가할 때 아래처럼 사용이 가능하다.
x = []
for i in range(1, 10):
x.append(i)
else:
print(x)
컨테이너 타입을 선언할 때 규칙성을 가진 요소들을 한꺼번에 선언하고 싶을때 for
문을 통해 선언하는 방식을 컴프리헨션이라고 한다.
일반적인 for
문을 사용해서 요소를 추가하는 방식보다 성능이 더 좋다고 한다.
-
for
키워드를 한번만 사용하여 요소를 추가시키는 경우
y = [x for x in range(1, 11)]
print(y)
-
for
키워드를 여러 번 사용하여 요소를 추가시키는 경우
z = [(x, y) for x in range(1, 11) for y in range(1, 11)]
print(z)
-
for
키워드와if
키워드를 같이 사용하는 경우 (특정 조건만을 만족시키는 요소만 추가시키는 경우)
# 짝수만 갖도록 하는 경우
y = [x for x in range(1, 11) if x % 2 == 0]
print(y)
-
if
키워드를 동시에 여러번 사용하는 경우
# 아래처럼 and 키워드로 대체해서 사용하는 것도 가능하다.
# y = [x for x in range(1, 11) if x % 2 == 0 and x <= 6]
y = [x for x in range(1, 11) if x % 2 == 0 if x <= 6]
print(y)
튜플을 컴프리헨션을 통해 선언하게 되면 제네레이터 (generator) 타입이 된다.
제네레이터의 특징은 다음과 같다.
-
next
함수를 통해 첫번째부터 값을 하나씩 차례대로 불러낼 수 있다. -
next
함수를 통해 불러낸 첫번째 값은 제네레이터 내에서 값이 삭제되며, 메모리에서 해제된다. - 메모리 주소값을 활용하므로 속도가 굉장히 빠르며, 메모리를 아낄 수 있다는 장점이 있다.
- 선언
y = (x for x in range(1, 11))
print(y)
print(type(y))
-
for
문 사용
y = (x for x in range(1, 11))
for x in y:
print(x)
-
next
함수를 통해 가져오는 방식
y = (x for x in range(1, 11))
# while의 조건식에 True를 하면 항상 참이므로 무한 루프가 된다.
while True:
x = next(y)
print(x)
if x == 5:
break