코딩헤딩

python 알고리즘 기초5 제너레이터(Generator)+예제 본문

python

python 알고리즘 기초5 제너레이터(Generator)+예제

멈머이 2023. 11. 16. 21:31
728x90

1. 기본문법

def simple_generator():
    ### 첫번째 반환값
    yield 1
    
    ### 두번째 반환값
    yield 2
    
    ### 세번째 반환값
    yield 3
### 제너레이터 전체 출력하기
for v in simple_generator():
    print(v)

결과 :

1

2

3

제너레이터에서는 함수를 객체로 인지하고 사용
함수를 생성한다는 의미 또는 제너레이터 객체를 생성한다는 의미를 사용.

 

 

2. 1부터 5까지 숫자를 생성해서 반환하는 제너레이터

def number_generator():
    for i in range(1, 6, 1):
        yield i

1) 전체 출력하기

### 함수 객체 생성하기
gen = number_generator()
for num in gen:
    print(num)

결과 :

1
2
3
4
5

 

2) 한건씩 출력하기

gen = number_generator()

try:
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
except:
    pass

결과 :

1

2

3

4

5

 

 

3. 파일에 한줄씩 읽어서 변환하는 제너레이터

def read_lines(file_path):
    ### 파일 처리 시 이터레이터와 다르게 with문을 사용해도 된다.
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            yield line.strip()
### 제너레이터 함수 생성하기
gen = read_lines("./04_example.txt")
for line in gen:
    print(line)

결과 :

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sssssssssssssssssssssssssssssssssssssss
ddddddddddddddddddddddddddddddddddddddd
fffffffffffffffffffffffffffffffffffffff
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

728x90