Skip to content

Commit 8695637

Browse files
committed
TR updates, first round
1 parent a496499 commit 8695637

File tree

5 files changed

+71
-20
lines changed

5 files changed

+71
-20
lines changed
Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
1-
# def fibonacci_generator(stop):
2-
# previous, next = 0, 1
1+
# def fibonacci_generator(stop=10):
2+
# current_fib, next_fib = 0, 1
33
# for _ in range(0, stop):
4-
# fib_number = previous
5-
# previous, next = next, previous + next
4+
# fib_number = current_fib
5+
# current_fib, next_fib = next_fib, current_fib + next_fib
66
# yield fib_number
77

88

9-
def fibonacci_generator(stop=100):
10-
previous, next = 0, 1
9+
def fibonacci_generator(stop=10):
10+
current_fib, next_fib = 0, 1
1111
index = 0
1212
while True:
1313
if index == stop:
1414
return
1515
index += 1
16-
fib_number = previous
17-
previous, next = next, previous + next
16+
fib_number = current_fib
17+
current_fib, next_fib = next_fib, current_fib + next_fib
1818
yield fib_number
19-
20-
21-
print("Fibonacci Generator")
22-
for fib in fibonacci_generator(10):
23-
print(fib)

python-iterators-iterables/fib_iter.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1-
class Fibonaccier:
1+
class FibonacciIterator:
22
def __init__(self, stop=10):
33
self._stop = stop
44
self._index = 0
5-
self._previous = 0
5+
self._current = 0
66
self._next = 1
77

88
def __iter__(self):
99
return self
1010

1111
def __next__(self):
12-
if self._index >= self._stop:
12+
if self._index < self._stop:
13+
self._index += 1
14+
fib_number = self._current
15+
self._current, self._next = (
16+
self._next,
17+
self._current + self._next,
18+
)
19+
return fib_number
20+
else:
1321
raise StopIteration
14-
self._index += 1
15-
fib_number = self._previous
16-
self._previous, self._next = self._next, self._previous + self._next
17-
return fib_number
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class FibonacciInfIterator:
2+
def __init__(self):
3+
self._index = 0
4+
self._current = 0
5+
self._next = 1
6+
7+
def __iter__(self):
8+
return self
9+
10+
def __next__(self):
11+
self._index += 1
12+
fib_number = self._current
13+
self._current, self._next = self._next, self._current + self._next
14+
return fib_number
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
def to_square(numbers):
2+
return (number**2 for number in numbers)
3+
4+
5+
def to_cube(numbers):
6+
return (number**3 for number in numbers)
7+
8+
9+
def to_even(numbers):
10+
return (number for number in numbers if number % 2 == 0)
11+
12+
13+
def to_odd(numbers):
14+
return (number for number in numbers if number % 2 != 0)
15+
16+
17+
def to_string(numbers):
18+
return (str(number) for number in numbers)
19+
20+
21+
print(list(to_string(to_square(to_even(range(20))))))
22+
print(list(to_string(to_cube(to_odd(range(20))))))
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class ReusableRange:
2+
def __init__(self, start=0, stop=None, step=1):
3+
if stop is None:
4+
stop, start = start, 0
5+
self._range = range(start, stop, step)
6+
self._iter = iter(self._range)
7+
8+
def __iter__(self):
9+
return self
10+
11+
def __next__(self):
12+
try:
13+
return next(self._iter)
14+
except StopIteration:
15+
self._iter = iter(self._range)
16+
raise

0 commit comments

Comments
 (0)