Skip to content

Commit 5fe4b13

Browse files
committed
iterators and generators
1 parent a1450d6 commit 5fe4b13

5 files changed

Lines changed: 86 additions & 0 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# it is an object that allows you traverse from element of collection one at a time
2+
# __iter__() return object of iterator
3+
# __next__()
4+
5+
arr = [1,2,3,4,5]
6+
iterator = iter(arr)
7+
8+
print(next(iterator))
9+
print(next(iterator))
10+
11+
12+
for i in iterator:
13+
print(i)
14+
15+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class my_iterator:
2+
3+
def __init__(self,start,end):
4+
self.start = start
5+
self.end = end
6+
7+
def __iter__(self):
8+
return self
9+
10+
def __next__(self):
11+
if self.start <= self.end:
12+
temp = self.start
13+
self.start += 1
14+
return temp
15+
else:
16+
raise StopIteration
17+
18+
ite = my_iterator(1,5)
19+
print(next(ite))
20+
for i in ite:
21+
print(i)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Generators
2+
3+
4+
def my_generator():
5+
for i in range(500000):
6+
yield i
7+
8+
gen = my_generator()
9+
print(next(gen))
10+
print(next(gen))
11+
print(next(gen))
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def fib_generator():
2+
a,b = 0,1
3+
while True:
4+
yield a
5+
a,b = b, a+b
6+
7+
gen = fib_generator()
8+
9+
for _ in range(10):
10+
print(next(gen))
11+
12+
for _ in range(10):
13+
print(next(gen))
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class my_iterator:
2+
3+
def __init__(self,start,end):
4+
self.start = start
5+
self.end = end
6+
7+
def __iter__(self):
8+
return self
9+
10+
def __next__(self):
11+
if self.start <= self.end:
12+
temp = self.start
13+
self.start += 1
14+
return temp
15+
else:
16+
raise StopIteration
17+
18+
def __reset__(self):
19+
self.start = 1
20+
21+
ite = my_iterator(1,5)
22+
print(next(ite))
23+
ite.__reset__()
24+
25+
for i in ite:
26+
print(i)

0 commit comments

Comments
 (0)