1) while
- 조건이 참일 때까지 반복하는 반복문
- for문이 값과 개수 중심이라면, while은 조건 중심이다
- 빠져나갈 조건에 대한 값과 상황을 설계해야 한다
i = 1
while i < 11:
print(i)
i += 1
# 1
# 2
# 3
# 4
# 5
# 명확하게 중단할 조건 작성
i = 1
while True:
print(i)
i += 1
if i == 6:
break
# 1
# 2
# 3
# 4
# 5
pass: 아래 내용을 skip -> 형식상 맞춤을 위해 사용
for i in range(1,5):
if i % 2 == 0:
print(i)
else:
pass
# 2
# 4
continue: for/while에서 아래 라인을 무시하고 다음 반복을 진행할 때 사용
a = [3,4,5,6,7,8]
for i in a:
print(i)
if i == 5:
continue
print('pass')
# 3
# pass
# 4
# pass
# 5 -> continue 아래의 라인은 진행되지 않음
# 6
# pass
# 7
# pass
# 8
# pass
break: 반복문을 멈추고 탈출
a = [3,4,5,6,7,8,9]
for i in a:
print(i)
if i == 5:
break
# 3
# 4
# 5
2) Stack
- 지하철 -> 제일 늦게 탑승한 사람이 제일 먼저 내린다
- Last In First Out: LIFO
새로운 것: 뒤로 쌓아 둠 -> .append()
처리할 것: 맨 뒤에서 뽑기 -> .pop()
a = [1,2,3,4,5]
a.append(7)
a.append(8)
a
# [1, 2, 3, 4, 5, 7, 8]
a.pop()
# 8
a
# [1, 2, 3, 4, 5, 7]
3) Queue
- 놀이공원 매표소 -> 먼저 온 사람부터 처리
- First In First Out: FIFO
새로운 것: 뒤로 쌓아 둠 -> .append()
처리할 것: 맨 앞에서 뽑기 -> .pop(0)
tip) 리스트와 사용하면 속도 저하가 발생하기 때문에 deque 패키지와 함께 사용해야 한다
a = [1,2,3,4,5]
a.append(7)
a.append(8)
a
# [1, 2, 3, 4, 5, 7, 8]
a.pop(0)
# 1
a
# [2, 3, 4, 5, 7, 8]
4) 재귀함수
- 자기 자신을 호출하는 함수
- 구조적인 반복을 코드화하기가 용이하다
- 퀵 정렬, DFS, DP, 규칙적인 부분 구현 등에 사용한다
- 재귀함수는 Stack처럼 동작한다
참고) 팩토리얼(n! = n*(n-1)!)을 생각해 보자
-> 맨 마지막에 호출된 것부터 앞으로 해결해 나가야 순차적으로 문제를 해결할 수 있다
def my_fact(n):
if n <= 1:
return 1
else:
return n * my_fact(n-1)
my_fact(5)
# 120
tip) 재귀함수는 무한히 돌 수 있기 때문에 while 종료 조건에 대해 설계해야 한다
'ASAC 6기 > Python 기본' 카테고리의 다른 글
[Python 기본] 정규식 (0) | 2024.08.18 |
---|---|
[Python 기본] 정렬 알고리즘(선택정렬, 삽입정렬, 버블정렬) (0) | 2024.08.15 |
[Python 기본] List comprehension, 함수, lambda, 정렬, lambda를 활용한 정렬 (0) | 2024.08.13 |