09.제너레이터(Generator)
by SANGGI JEON
Generator
- iterator를 생성해주는 함수로 함수안에 yield 키워드를 사용
- 모든 값을 포함하여 반환하지 않고 한 개의 값씩 반환하는 방식
- 메모리를 효율적으로 사용하기 위해 사용
# 기존 함수 구현
def square_numbers(nums):
result = []
for i in nums:
result.append(i*i)
return result
my_nums = square_numbers([1, 2, 3, 4, 5])
print(my_nums)
- next() 메서드를 사용하거나 반복문을 통해 접근할 수 있음
# Generator를 활용한 함수 구현
def square_numbers(nums):
for i in nums:
yield i*i
my_nums = square_numbers([1, 2, 3, 4, 5])
print(next(my_nums))
print(next(my_nums))
print(next(my_nums))
print(next(my_nums))
print(next(my_nums))
# Generator를 활용한 함수 구현
def square_numbers(nums):
for i in nums:
yield i*i
my_nums = square_numbers([1, 2, 3, 4, 5])
for num in my_nums:
print(num)
- 함수로 구현하지 않고 Comprehension 형태로 구현할 수 있음
# Generator를 활용한 함수 구현
my_nums = (x*x for x in [1, 2, 3, 4, 5])
print(my_nums)
for num in my_nums:
print(num)
Subscribe via RSS