์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- java
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ ๊ธฐ์ด
- Operating System
- ๋ฌ์คํธ ์์
- data communication
- ubuntu
- ํ์ด์ฌ
- C
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ์ฐ๋ถํฌ
- ๋ฐฑ์ค ๋ฌ์คํธ
- Database
- ์ด์์ฒด์
- ์๋ฐ ๊ฐ๋
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- ์ค๋ผํด
- Reversing
- ์๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐฑ์ค
- Python
- OS
- ๋ฌ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- Python challenge
- ๋ฐ์ดํฐ ํต์
- ์ค๋ผํดDB
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- Rust
Archives
- Today
- Total
IT’s Portfolio
[Python] Iterator ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ป Iterator
๐ค What is Iterator?
- ๋ฐ๋ณต์: ์์๋๋ก ๋ค์ ๊ฐ์ ๋ฐํํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธ
- ์์ฒด ๋ด์ฅ๋ next ๋งค์ง ๋ฉ์๋
Iterator ๊ฐ์ฒด ๊ตฌํ
class Class_of_Iteration:
def __init__(self, start_num, stop_num):
self.pointer = start_num
self.max = stop_num
def __iter__(self):
return self
def __next__(self):
if self.pointer > self.max:
raise StopIteration
else:
self.pointer+=1
return self.pointer-1
A = Class_of_Iteration(1, 3)
print(type(A))
print(A.__next__())
print(A.__next__())
print(A.__next__())
print(A.__next__()) # ์์ธ๋ฐ์: StopIteration
๐๐ป Collection Type & Sequence Type
- Collection: list, tuple, set, dict์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ ํ์
- Sequence: list, tuple, range, str๊ณผ ๊ฐ์ด ์์๊ฐ ์กด์ฌํ๋ ๋ฐ์ดํฐ ํ์
๐๐ป Iterable & Iterator
- ๋ด๋ถ ์์๋ค์ ํ๋์ฉ ๋ฐํํ ์ ์๋ ๊ฐ์ฒด๋ฅผ
Iterable
(๋ฐ๋ณต ๊ฐ๋ฅ)ํ๋ค๊ณ ํจ - for๋ฌธ์ ํตํด ์ํํ ์ ์๋ ๊ฐ์ฒด
- Iterable์ next X
- Iterator์ next O
- Iterableํ ๊ฐ์ฒด๋ Iterator๋ก ๋ง๋ค ์ ์์
iter()
์ฌ์ฉiter()
์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ค๋ชiter(object to callable, sentinel)
- ๋ฐ๋ณต์ ๋๋ผ ๊ฐ์ ์ง์ ํ ์ ์์
.__iter__()
์ฌ์ฉ
- Iterator์ ๋ ํจ์๋ก ๋ค์ ๊ฐ์ ๋ฐํํ ์ ์์
next()
.__next__()
๐๐ป Loop & Iterator
- Loop๋ ์คํ๊ณผ ๋์์ ๊ฐ์ ๊ณ์ ๋ง๋ค์ด๋ด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง
- Iterator์ ์์๋๋ก ๋ค์ ๊ฐ์ ๋ฐํํ ์ ์๋ ์ํ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ํ์ํ ์์ ์ next ํจ์๋ก ์๋ํ๊ธฐ์ ํจ์จ์ฑ์ด ์ข์
- ๋ฐ์ดํฐ ์์ฑ์ ๋ฏธ๋ฃจ๋ ๋ฐฉ์์ lazyevaluation ์ด๋ผ๊ณ ์นญํจ
- ํ์ด์ฌ for๋ฌธ์ ๋ด๋ถ์ ์ผ๋ก Iterator๋ฅผ ์์ฑํด ๋์
- ํด๋น ๊ฐ์ฒด์ iter๋ฅผ ์์ฑํด next๋ก ์ํ
- StopIteration ๋ฐ์ ์ ์ํ ์ค๋จ
- Iterator์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ while๋ณด๋ค๋ StopIteration์ ์ฝ๊ฒ ์ ์ดํ ์ ์๋ for์ ์์ฃผ ์ฐ์
Iterator Control 1
# while
import random
while_res = []
while 1:
i = random.randint(0, 10)
if i == 4:
break
else:
while_res.append(i)
print(while_res)
# iterator
# lambda ๋งค๊ฐ๋ณ์ : ํํ์
iter_res = [x for x in iter(lambda: random.randint(0, 10), 4)]
print(iter_res)
- random module์ ์ฌ์ฉํ ์ฝ๋
Iterator Control 2
N = ['f1r3', '_', 'r41n']
# while
while_iter = iter(N)
while 1:
try:
i = next(while_iter)
except StopIteration:
break
print(i, end='')
# for
for_iter = iter(N)
for _ in range(len(N)):
print(for_iter.__next__(), end='')
- while๊ณผ for์ด StopIterator์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง์ ๋ํ ์ฝ๋
728x90
๋ฐ์ํ
'Development Study > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] Fibonacci Sequence in Python (0) | 2023.01.16 |
---|---|
[Python] Generator (0) | 2022.11.30 |
[Python] requests์ urllib (0) | 2022.11.18 |
[Algorithm] Baekjoon - ๋ฐ๋ณต๋ฌธ ๋จ๊ณ (0) | 2022.10.12 |
[Python] ํ์ด์ฌ์ ๋ฌธ์์ด ํฌ๋ฉํ Ver.2 (0) | 2022.10.06 |
Comments