Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d8f6d1d

Browse files
Added Generators notebook
1 parent 5c7eb43 commit d8f6d1d

File tree

1 file changed

+193
-0
lines changed

1 file changed

+193
-0
lines changed

‎Generators.ipynb

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"id": "b30d2461",
6+
"metadata": {},
7+
"source": [
8+
"# Python Generator\n",
9+
"\n",
10+
"- A function that returns an `iterator` that produces a sequence of values when iterated over.\n",
11+
"\n",
12+
"- Generators are useful when we want to produce a large sequence of values, but we don't want to store all of them in memory at once."
13+
]
14+
},
15+
{
16+
"cell_type": "markdown",
17+
"id": "414427c6",
18+
"metadata": {},
19+
"source": [
20+
"## 1. Create & Access Python Generator\n",
21+
"\n",
22+
"- In Python, similar to defining a normal function,\n",
23+
"- instead of the `return` use the `yield` statement.\n",
24+
"\n",
25+
"```\n",
26+
"********************************\n",
27+
"\n",
28+
"def generator_name(arg):\n",
29+
" # statements\n",
30+
" yield something\n",
31+
"\n",
32+
"********************************\n",
33+
"```"
34+
]
35+
},
36+
{
37+
"cell_type": "code",
38+
"execution_count": 3,
39+
"id": "370ea855",
40+
"metadata": {},
41+
"outputs": [
42+
{
43+
"name": "stdout",
44+
"output_type": "stream",
45+
"text": [
46+
"value: 0\n",
47+
"value: 1\n",
48+
"value: 2\n",
49+
"value: 3\n",
50+
"value: 4\n"
51+
]
52+
}
53+
],
54+
"source": [
55+
"# A generator function that produce Sequence of Numbers\n",
56+
"\n",
57+
"def sequence_generator(num):\n",
58+
" value = 0\n",
59+
" while value < num:\n",
60+
" yield value\n",
61+
" value += 1\n",
62+
"\n",
63+
"for i in sequence_generator(5):\n",
64+
" print('value: ', i)\n",
65+
" \n",
66+
" "
67+
]
68+
},
69+
{
70+
"cell_type": "code",
71+
"execution_count": 13,
72+
"id": "ff2d87d4",
73+
"metadata": {},
74+
"outputs": [
75+
{
76+
"name": "stdout",
77+
"output_type": "stream",
78+
"text": [
79+
"<generator object sequence_generator at 0x000001C5DC065580>\n"
80+
]
81+
}
82+
],
83+
"source": [
84+
"# Another way for accessing Generator elements\n",
85+
"\n",
86+
"nums = sequence_generator(5) # crearting generator object\n",
87+
"print(nums) # Show you generator object with memory address\n",
88+
"\n",
89+
"print(next(nums))\n",
90+
"print(next(nums))\n",
91+
"print(next(nums))\n",
92+
"print(next(nums))\n",
93+
"print(next(nums))\n",
94+
"print(next(nums)) # gives stop iteration error when limit exceeded."
95+
]
96+
},
97+
{
98+
"cell_type": "code",
99+
"execution_count": 15,
100+
"id": "892031ac",
101+
"metadata": {},
102+
"outputs": [
103+
{
104+
"ename": "NameError",
105+
"evalue": "name 'my_range' is not defined",
106+
"output_type": "error",
107+
"traceback": [
108+
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
109+
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
110+
"\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_14764/1912924913.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msequence_generator\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmy_range\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msequence_generator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# 0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msequence_generator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# 1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msequence_generator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# 2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
111+
"\u001b[1;31mNameError\u001b[0m: name 'my_range' is not defined"
112+
]
113+
}
114+
],
115+
"source": [
116+
"sequence_generator = my_range(3)\n",
117+
"print(next(sequence_generator)) # 0\n",
118+
"print(next(sequence_generator)) # 1\n",
119+
"print(next(sequence_generator)) # 2"
120+
]
121+
},
122+
{
123+
"cell_type": "markdown",
124+
"id": "812204fb",
125+
"metadata": {},
126+
"source": [
127+
"## 2. Generator Expression Syntax\n",
128+
"\n",
129+
" ```(expression for item in iterable)```\n",
130+
"\n",
131+
"`expression` is a value that will be returned for each item in the iterable"
132+
]
133+
},
134+
{
135+
"cell_type": "code",
136+
"execution_count": 16,
137+
"id": "8b7f8e1a",
138+
"metadata": {},
139+
"outputs": [
140+
{
141+
"name": "stdout",
142+
"output_type": "stream",
143+
"text": [
144+
"<generator object <genexpr> at 0x000001C5DC0659E0>\n"
145+
]
146+
}
147+
],
148+
"source": [
149+
"square = (i*i for i in range(5)) #creating Generator object\n",
150+
"print(square)"
151+
]
152+
},
153+
{
154+
"cell_type": "markdown",
155+
"id": "dffb7bf4",
156+
"metadata": {},
157+
"source": [
158+
"## 3. Usage of Generators\n",
159+
"\n",
160+
"- Memory Efficient\n",
161+
"- Represent Infinite Stream\n",
162+
"- Pipelining Generators\n",
163+
"\n",
164+
"\n",
165+
"\n",
166+
"**Reference**\n",
167+
"\n",
168+
"https://www.programiz.com/python-programming/generator"
169+
]
170+
}
171+
],
172+
"metadata": {
173+
"kernelspec": {
174+
"display_name": "Python 3 (ipykernel)",
175+
"language": "python",
176+
"name": "python3"
177+
},
178+
"language_info": {
179+
"codemirror_mode": {
180+
"name": "ipython",
181+
"version": 3
182+
},
183+
"file_extension": ".py",
184+
"mimetype": "text/x-python",
185+
"name": "python",
186+
"nbconvert_exporter": "python",
187+
"pygments_lexer": "ipython3",
188+
"version": "3.9.7"
189+
}
190+
},
191+
"nbformat": 4,
192+
"nbformat_minor": 5
193+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /