-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path25-python-generators.py
118 lines (81 loc) · 3.11 KB
/
25-python-generators.py
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# https://docs.python.org/2/library/itertools.html#itertools.chain
# https://www.python.org/dev/peps/pep-0255/
# https://codeburst.io/understanding-generators-in-es6-javascript-with-examples-6728834016d5#:~:text=Generators%20are%20a%20special%20class,%E2%80%8Ba%20series%20of%20values.
list1 = [number for number in [0, 1, 2, 3, 4, 5] if number % 2 == 0]
print(list1)
list1 = [number for number in range(0, 6) if number % 2 == 0]
print(list1)
#######################################################################################################################
def even(n):
for number in range(n + 1):
if number % 2 == 0:
yield number
even(10)
for number in even(10):
print(number)
list1 = [number for number in even(10)]
print(list1)
#######################################################################################################################
even = even(3)
next(even)
next(even)
# next(even)
# ---------------------------------------------------------------------------
# StopIteration Traceback (most recent call last)
# <ipython-input-10-771f3ce83b3e> in <module>
# ----> 1 next(even)
#
# StopIteration:
#######################################################################################################################
list1 = [1, 2, 3, 4, 5]
iterable_list = iter(list1)
iterable_list
next(iterable_list)
next(iterable_list)
next(iterable_list)
next(iterable_list)
#######################################################################################################################
string1 = "Hello"
iterable_string = iter(string1)
iterable_string
next(iterable_string)
next(iterable_string)
next(iterable_string)
next(iterable_string)
#######################################################################################################################
def natural_numbers():
num = 1
while True:
yield num
num += 1
numbers = natural_numbers()
print(next(numbers))
print(next(numbers))
#######################################################################################################################
def power_series(number, power):
base = number
while True:
yield base ** power
base += 1
#######################################################################################################################
def take(n, iterable):
index = 0
for iter_value in iterable:
if index >= n:
return
index += 1
yield iter_value
#######################################################################################################################
values = take(3, iter(['a', 'b', 'c', 'd', 'e']))
for value in values:
print(value)
# With List Comprehension
list1 = [value for value in take(3, iter(['a', 'b', 'c', 'd', 'e']))]
print(list1)
list1 = [value for value in take(4, natural_numbers())]
print(list1)
list1 = [value for value in take(4, natural_numbers())]
print(list1)
list1 = [value for value in take(5, power_series(3, 2))]
print(list1)
#######################################################################################################################