μ΄μ μ μ λλ μ΄ν°λ₯Ό μμ£Ό μ κΉ μ 리νκ³ λμ΄κ°λλ° μ λλ‘ κ³΅λΆνκ³ μ λ€μ μ 리νλ €κ³ ν©λλ€.
μ λλ μ΄ν° : μ΄ν°λ μ΄ν°λ₯Ό μμ±ν΄μ£Όλ ν¨μμ΄λ©°, νμ΄μ¬μ μνμ€λ₯Ό μμ±νλ κ°μ²΄μ
λλ€.(μ λλ μ΄ν°λ yield λ¬Έμ μ¬μ©ν©λλ€)
μ΄ν°λ μ΄ν° : λ°λ³΅λ¬Έμ νμ©ν΄μ λ°μ΄ν°λ₯Ό μννλ©΄μ μ²λ¦¬νλ κ²
(리μ€νΈ, λμ
λ리, νν λ±)
μνμ€ : μλ€κ° κΌ μ§μΌμ ΈμΌ νλ μ/곡κ°μ μμ
1. μ λλ μ΄ν° μλ forλ¬Έ
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)
>> [1, 4, 9, 16, 25]
printλ₯Ό μ€νν΄λ³΄λ©΄ μμ ν¨μκ° μ λΆ μ€νλμ΄ κ°μ΄ λ°νλ κ²μ λ³Ό μ μμ΅λλ€.
2. μ λλ μ΄ν°λ₯Ό μ¬μ©ν forλ¬Έ
def square_numbers(nums):
for i in nums:
yield i * i
my_nums = square_numbers([1, 2, 3, 4, 5]) #1
print(my_nums)
>> <generator object gensquare_numbers at 0x7fc5fe928f90>
μμ λ΄μ©μ νλ¦°νΈν΄λ³΄λ©΄ κ°μ΄ λμ€λ κ²μ΄ μλ, μ λλ μ΄ν° μ€λΈμ νΈκ° 리ν΄μ΄ λ©λλ€.
μμ μ΄ λ¦¬ν΄ν λͺ¨λ κ°μ λ©λͺ¨λ¦¬μ μ μ₯νλ κ²μ΄ μλ νΈμΆ λ λλ§λ€ νλμ© κ°μ μ λ¬νκΈ° λλ¬Έμ κΈ°λ€λ¦¬λ μνμ
λλ€.
def square_numbers(nums):
for i in nums:
yield i * i
my_nums = square_numbers([1, 2, 3, 4, 5]) #1
# κ·Έλ₯ νλ¦°νΈκ° μλ nextλ‘ κ°μΈμ νλ¦°νΈ ν΄λ³΄λ©΄ 1μ΄ μ°νμ λμ΅λλ€.
print(next(my_nums))
>> 1
print(next(my_nums))
>> 4
print(next(my_nums))
>> 9
print(next(my_nums))
>> 16
print(next(my_nums))
>> 25
νλ¦°νΈλ₯Ό κ³μ λ°λ³΅ν΄λ³΄λ©΄ κ°μ΄ λμ€λ κ²μ μ μ μμ΅λλ€.
κ°μ΄ μ λΆ λ°νλ μνμμ νλ² λ next λ₯Ό νλ¦°νΈ νλ©΄,
print(next(my_nums))
>> Traceback (most recent call last):
File "generator.py", line 22, in
print(next(my_nums))
StopIteration
StopIteration μμΈκ° λ°μν©λλ€.
μ λλ μ΄ν°λ μΌλ°μ μΌλ‘ forλ¬Έμ ν΅ν΄μ νΈμΆν©λλ€.
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)
μμ μ½λλ₯Ό μ€νν΄λ³΄λ©΄ μμΈμ²λ¦¬κ° λ°μνμ§ μκ³ , μμμ λ©μΆ₯λλ€.
λ°μ΄ν°μ μμ΄ λ§μμ§κ³ λ©λͺ¨λ¦¬ μ¬μ©λμ μ΅μ ν ν΄μΌνλ μν©μ΄ μ¨λ€λ©΄ μ λλ μ΄ν°λ₯Ό μ¬μ©ν΄μΌν©λλ€.
yield λ₯Ό μ¬μ©νμ§ μκ³ , μ λλ μ΄ν°λ₯Ό λ§λ€ μ μμ΅λλ€.
result = (i*i for i in range(0,10)) for num in result: print(num)
리μ€νΈ μ»΄ν리ν¨μ ꡬ쑰μμ κ΄νΈλ₯Ό '[]' κ° μλ '()' λ‘ λ°κΏμ£Όλ©΄ λ©λλ€.