๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Python

[Python] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ(Generator)_ํ”„๋กœ๊ทธ๋žจ

by ITyranno 2023. 11. 21.
728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค.

 

 

 

<์ œ๋„ˆ๋ ˆ์ดํ„ฐ(Generator)>

1. ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ(๋ฐ˜๋ณต)์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
2. ์ดํ„ฐ๋ ˆ์ดํ„ฐ์™€ ๋™์ผํ•˜๊ฒŒ ํ˜ธ์ถœ ์‹œ์ ์—๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค.
3. ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” return์ด ์•„๋‹Œ, yield๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
4. ์ดํ„ฐ๋ ˆ์ดํ„ฐ์™€ ๋™์ผํ•˜๊ฒŒ ์ „์ฒด ๋˜๋Š” next() ํ•œ๊ฑด์”ฉ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

<์ž‘์„ฑ ์ฝ”๋“œ>

 

 

<์˜ˆ์ œ> ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

 

 

def simple_generator() :
    ### ์ฒซ๋ฒˆ์งธ ๋ฐ˜ํ™˜ํ•  ๊ฐ’
    yield 1
    
    ### ๋‘๋ฒˆ์งธ ๋ฐ˜ํ™˜ํ•  ๊ฐ’
    yield 2
    
    ### ์„ธ๋ฒˆ์งธ ๋ฐ˜ํ™˜ํ•  ๊ฐ’
    yield 3

 

 

### ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์ „์ฒด ์ถœ๋ ฅํ•˜๊ธฐ
# - ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ์ฒด๋กœ ์ธ์ง€ํ•˜๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# - ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ ๋˜๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
for v in simple_generator() :
    print(v)

 

 

<์‹คํ–‰ ํ™”๋ฉด>

 

 

 

 

 

<์ž‘์„ฑ ์ฝ”๋“œ>

 

<์˜ˆ์ œ> 1๋ถ€ํ„ฐ 5๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ

 

 

### ํ•จ์ˆ˜์ด๋ฆ„ number_generator()
def number_generator():
    for i in range(1, 6, 1):
        yield i

 

 

### ์ „์ฒด ์ถœ๋ ฅํ•˜๊ธฐ
### - ํ•จ์ˆ˜ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ
gen = number_generator()
for num in gen :
    print(num)

 

 

<์‹คํ–‰ ํ™”๋ฉด>

 

 

 

 

<์ž‘์„ฑ ์ฝ”๋“œ>

 

### - ํ•จ์ˆ˜ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ
gen = number_generator()

### ํ•œ๊ฑด์”ฉ ์ถœ๋ ฅํ•˜๊ธฐ
try :
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
    print(next(gen))
except :
    pass

 

 

 

<์‹คํ–‰ ํ™”๋ฉด>

 

 

728x90
๋ฐ˜์‘ํ˜•

loading