728x90
반응형
- generator 는 파이썬에서 특별한 종류의 iterator 를 생성하는 함수이다.
- yield 키워드를 사용하여 값을 반환하며, 함수가 다시 호출될 때마다 이전에 중단된 위치에서 실행을 계속한다.
- 메모리를 효울적으로 사용한다.
- lazy evaluation : generator 요청에 따라 값이 생성되므로, 필요한 값만 계산하여 시간을 절약할 수 있다.
피보나치 수열
# 제네레이터
# 제너레이터 함수를 사용하여 피보나치 수열 구
def fibonacci_generator(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
fibonacci_sequence = fibonacci_generator(10)
for number in fibonacci_sequence:
print(number)
# 0
# 1
# 1
# 2
# 3
# 5
# 8
# 13
# 21
# 34
# 제너레이터 함수와 next()를 사용하여 피보나치 시퀀스 생성하기
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
result = fibonacci(10)
print(next(result))
# 0
print(next(result))
# 1
print(next(result))
# 1
for num in result:
print(num)
# 2
# 3
# 5
# 8
# 13
# 21
# 34
# if, 중간에 next 1개가 없다면 ??
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
result = fibonacci(10)
print(next(result))
# 0
# print(next(result))
print(next(result))
# 1
for num in result:
print(num)
# 1
# 2
# 3
# 5
# 8
# 13
# 21
# 34
위 내용에서 볼 수 있듯, 제너레이터는 트리거가 될 때 마다 함수가 실행되는 것을 알 수 있다.
다른 사용방법
# 제너레이터 함수를 사용하여 홀수 숫자 시퀀스 생성하기
def odd_numbers(start, end):
while start <= end:
if start % 2 != 0:
yield start
start += 1
result = odd_numbers(1, 10)
for num in result:
print(num)
# 1
# 3
# 5
# 7
# 9
# 제너레이터 함수를 사용하여 알파벳 시퀀스 생성하기
def generate_alphabet(start_letter, end_letter):
start = ord(start_letter)
end = ord(end_letter)
while start <= end:
yield chr(start)
start += 1
runner = generate_alphabet('A', 'F')
for letter in runner:
print(letter)
# A
# B
# C
# D
# E
# F
728x90
반응형
'Dev. > Python' 카테고리의 다른 글
Python - 패키지 (0) | 2023.06.12 |
---|---|
Python - 클래스 상속 (Inheritance) (0) | 2023.06.12 |
Python - 함수 : 작동원리, return, 기본값, 가변, 키워드 (0) | 2023.06.11 |
Python - Dictionary (0) | 2023.06.09 |
Python - Tuple (0) | 2023.06.08 |
댓글