iterable๊ณผ iterator
- Iterator๋ ๊ฐ์ ํ๋์ฉ ๋ฐํํ๋ ๋ฐ์ ํนํ๋์ด ์๊ณ , iterable์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ง ๊ฐ์ฒด๋ก์ ๋ฐ๋ณต ๊ฐ๋ฅํ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Iterable(๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด):
๋ด๋ถ ์์์ ๋ํด ์ํ(iterate)ํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค.
- for ๋ฃจํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, in ์ฐ์ฐ์๋ก ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ด์ฅ ํจ์ **iter()**๋ฅผ ์ฌ์ฉํ์ฌ iterator๋ก ๋ณํํ ์ ์์ต๋๋ค.
- ๋ํ์ ์ธ iterable ์์๋ก๋ ๋ฆฌ์คํธ, ํํ, ๋ฌธ์์ด์ด ์์ต๋๋ค.
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item)
Iterator(๋ฐ๋ณต์):
next() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฐจ๋ก๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค.
- ํด๋์ค์์ **__iter__()**์ __next__() ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
- ํ ๋ฒ๋ง ์ํ ๊ฐ๋ฅํ ํน์ฑ์ด ์์ผ๋ฉฐ, ์ํ๊ฐ ๋๋๋ฉด ๋ ์ด์ ๊ฐ์ด ์์ต๋๋ค.
- ์ฒ์๋ถํฐ ๋ค์ ์ํํ๋ ค๋ฉด ์๋ก์ด iterator๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
my_iterator = iter([1, 2, 3, 4, 5])
# ํ ๋ฒ ์ํ
print(next(my_iterator)) # 1
print(next(my_iterator)) # 2
# iterator๋ฅผ ๋ค์ ์ฒ์๋ถํฐ ์ํํ๋ ค๋ฉด ๋ค์ iter() ํจ์๋ฅผ ์ฌ์ฉ
my_iterator = iter([1, 2, 3, 4, 5])
print(next(my_iterator)) # 1