{"id":25527917,"date":"2022-06-11T19:35:46","date_gmt":"2022-06-11T14:05:46","guid":{"rendered":"https:\/\/entri.app\/blog\/?p=25527917"},"modified":"2023-05-04T16:23:46","modified_gmt":"2023-05-04T10:53:46","slug":"what-are-generators-in-python-and-how-to-use-them","status":"publish","type":"post","link":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/","title":{"rendered":"What are Generators in Python and How to use them?"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69e73244af848\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69e73244af848\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Generators_with_Iterators\" >Generators with Iterators<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Generator_using_next\" >Generator using next<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Program_to_print_square_of_numbers_from_1_to_n\" >Program to print square of numbers from 1 to n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Python_Generators_%E2%80%93_A_complete_guide_to_create_and_use_generators\" >Python Generators \u2013 A complete guide to create and use generators<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#What_are_Python_Generator_Functions\" >What are Python Generator Functions?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#How_to_Create_a_Python_Generator\" >How to Create a Python Generator?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Python_Generators_with_Loops\" >Python Generators with Loops<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Using_Generators_with_List_Function\" >Using Generators with List() Function<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Python_Generator_Expressions\" >Python Generator Expressions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Why_Generators_are_Used\" >Why Generators are Used?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#Summary\" >Summary<\/a><\/li><\/ul><\/nav><\/div>\n<p>Generators have been an important part of python ever since they were introduced with PEP 255.<\/p>\n<p>Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers. But unlike functions, which return a whole array, a generator yields one value at a time which requires less memory.<\/p>\n<p><a href=\"https:\/\/entri.app\/course\/python-programming-course\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-25522670 size-full\" src=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1.png\" alt=\"Python and Machine Learning Rectangle\" width=\"970\" height=\"250\" srcset=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1.png 970w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-300x77.png 300w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-768x198.png 768w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-750x193.png 750w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/p>\n<p>Any python function with a keyword \u201cyield\u201d may be called as generator. A normal python function starts execution from first line and continues until we get a return statement or an exception or end of the function. However, any of the local variables created during the function scope are destroyed and not accessible further. In case of generator, when it encounters a yield keyword the state of the function is frozen and all the variables are stored in memory until the generator is called again.<\/p>\n<p style=\"text-align: center;\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/course\/python-programming-course\/\" target=\"_blank\" rel=\"noopener\">&#8220;Ready to take your python skills to the next level? Sign up for a free demo today!&#8221;<\/a><\/strong><\/p>\n<p>We can use generator in accordance with an iterator or can be explicitly called using the \u201cnext\u201d keyword.<\/p>\n<p>Generally generators in Python are:<\/p>\n<ul class=\"list\">\n<li>Defined with the def keyword<\/li>\n<li>Use the yield keyword<\/li>\n<li>May contain several yield keywords.<\/li>\n<li>Returns an iterator.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Generators_with_Iterators\"><\/span><strong>Generators with Iterators<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre class=\"prettyprint notranslate prettyprinted\"><span class=\"kwd\">def<\/span><span class=\"pln\"> generator_thr_iter<\/span><span class=\"pun\">():<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"str\">'xyz'<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"lit\">246<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"lit\">40.50<\/span>\r\n<span class=\"kwd\">for<\/span><span class=\"pln\"> i <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> generator_thr_iter<\/span><span class=\"pun\">():<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">print<\/span><span class=\"pun\">(<\/span><span class=\"pln\">i<\/span><span class=\"pun\">)<\/span><\/pre>\n<h3><strong>Output<\/strong><\/h3>\n<pre class=\"result notranslate\">xyz\r\n246\r\n40.5<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Generator_using_next\"><\/span><strong>Generator using next<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre class=\"prettyprint notranslate prettyprinted\"><span class=\"kwd\">def<\/span><span class=\"pln\"> generator_thr_iter<\/span><span class=\"pun\">():<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"str\">'xyz'<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"lit\">246<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span> <span class=\"lit\">40.50<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> g <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> generator_thr_iter<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> g<\/span><span class=\"pun\">.<\/span><span class=\"pln\">__next__<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"str\">'xyz'<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> g<\/span><span class=\"pun\">.<\/span><span class=\"pln\">__next__<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"lit\">246<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> g<\/span><span class=\"pun\">.<\/span><span class=\"pln\">__next__<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"lit\">40.5<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> g<\/span><span class=\"pun\">.<\/span><span class=\"pln\">__next__<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"typ\">Traceback<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">most recent call <\/span><span class=\"kwd\">last<\/span><span class=\"pun\">):<\/span>\r\n<span class=\"typ\">File<\/span> <span class=\"str\">\"&lt;pyshell#39&gt;\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> line <\/span><span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">in<\/span> <span class=\"str\">&lt;module&gt;<\/span><span class=\"pln\">\r\ng<\/span><span class=\"pun\">.<\/span><span class=\"pln\">__next__<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"typ\">StopIteration<\/span><\/pre>\n<p>We can think of generators as the one returning multiple items one by one instead of all at once and the generator function is paused until the next item is requested.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Program_to_print_square_of_numbers_from_1_to_n\"><\/span><strong>Program to print square of numbers from 1 to n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Consider we want to calculate the square of number from 1 to n, where n is really big number, such that creating a list of numbers up to \u2018n\u2019 would occupy the entire system memory space.<\/p>\n<p>Without generator, our approach will be something like &#8211;<\/p>\n<pre class=\"prettyprint notranslate prettyprinted\"><span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> n<\/span><span class=\"pun\">=<\/span> <span class=\"lit\">200000000000<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span><span class=\"pln\"> number_list <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> range<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> n<\/span><span class=\"pun\">+<\/span><span class=\"lit\">1<\/span><span class=\"pun\">)<\/span>\r\n<span class=\"pun\">&gt;&gt;&gt;<\/span> <span class=\"kwd\">for<\/span><span class=\"pln\"> i <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> number_list<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">print<\/span><span class=\"pun\">(<\/span><span class=\"pln\">i<\/span><span class=\"pun\">*<\/span><span class=\"pln\">i<\/span><span class=\"pun\">)<\/span><\/pre>\n<p>Above approach will consume lot of system memory. Better approach is to iterate over the numbers without ever creating the list of numbers so that the system memory is not occupied. Here comes the use of generators.<\/p>\n<p>Our generator program for the same would be &#8211;<\/p>\n<pre class=\"prettyprint notranslate prettyprinted\"><span class=\"kwd\">def<\/span><span class=\"pln\"> num_generator<\/span><span class=\"pun\">(<\/span><span class=\"pln\">n<\/span><span class=\"pun\">):<\/span><span class=\"pln\">\r\nnum <\/span><span class=\"pun\">=<\/span><span class=\"lit\">1<\/span>\r\n<span class=\"kwd\">while<\/span> <span class=\"kwd\">True<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">yield<\/span><span class=\"pln\"> num\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> num <\/span><span class=\"pun\">==<\/span><span class=\"pln\"> n<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 \u00a0 <\/span><span class=\"kwd\">return<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">else<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 \u00a0 num <\/span><span class=\"pun\">+=<\/span> <span class=\"lit\">1<\/span>\r\n<span class=\"kwd\">for<\/span><span class=\"pln\"> i <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> num_generator<\/span><span class=\"pun\">(<\/span><span class=\"lit\">200000000000<\/span><span class=\"pun\">):<\/span><span class=\"pln\">\r\n\u00a0 \u00a0<\/span><span class=\"kwd\">print<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">i<\/span><span class=\"pun\">*<\/span><span class=\"pln\">i<\/span><span class=\"pun\">)<\/span><\/pre>\n<p>So in above approach, when the for loop is first initialised the num_generator is called and the value of n = 200000000000 is stored in memory and num=1 is initialised and is entered into while loop which loops forever. Then the yield num is encountered, at this time the while loop is frozen and all the local variables are stored in memory. Since num=1, yield num is returned to the for loop and is assigned to I, where 1(i*i) is printed and the next call to num_generator is made.<\/p>\n<p>Now the execution starts from the point where it has frozen previously, so it executes the line num == n (1 == 200000000000), which is false so num +=1 is executed which comes to num = 2 and the while loop is executed once again and the process continues.<\/p>\n<p>Finally while loop is executed till n=200000000000, when 200000000000 is yielded then the next line \u2018num == n\u2019(200000000000 == 200000000000) is executed, since it is true the return statement is executed.<\/p>\n<p>So when generator executes a return statement or encounters exception or reach the end of the generator the \u201cStopIteration\u201d exception is raised and the for loop iteration stops at the moment. So we are able to print square of number upto 200000000000 without ever creating a big list of numbers which would be have occupied large system memory.<\/p>\n<h2 class=\"post-title entry-title fittexted_for_single_post_title\"><span class=\"ez-toc-section\" id=\"Python_Generators_%E2%80%93_A_complete_guide_to_create_and_use_generators\"><\/span><strong>Python Generators \u2013 A complete guide to create and use generators<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"entry themeform fittexted_for_entry\">\n<div class=\"entry-inner\">\n<p>Generators\u00a0are also used to\u00a0create functions\u00a0that\u00a0behave\u00a0like\u00a0iterators. It is a different\u00a0approach\u00a0to\u00a0create iterators.<\/p>\n<p>This article will teach you about Python generators, how you can create and use generators effectively in your code.<\/p>\n<p>We will also see\u00a0 learn about its applications.<\/p>\n<p style=\"text-align: center;\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/course\/python-programming-course\/\" target=\"_blank\" rel=\"noopener\">&#8220;Experience the power of our web development course with a free demo &#8211; enroll now!&#8221;<\/a><\/strong><\/p>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"What_are_Python_Generator_Functions\"><\/span><strong>What are Python Generator Functions?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Generator functions\u00a0are special kind of functions that\u00a0returns\u00a0an\u00a0iterator\u00a0and we can\u00a0loop\u00a0it through just like a\u00a0list, to\u00a0access\u00a0the\u00a0objects\u00a0one at a\u00a0time.<\/p>\n<p>Python generator functions are a\u00a0simple\u00a0way to\u00a0create iterators. They solve the common problem of\u00a0creating iterable\u00a0objects. The traditional way was to\u00a0create a class\u00a0and then we have to\u00a0implement __iter__()\u00a0and\u00a0__next__()\u00a0methods.<\/p>\n<p>We also have to manage the\u00a0internal state\u00a0and\u00a0raise\u00a0the\u00a0StopIteration\u00a0exception\u00a0when the\u00a0generator ends.<\/p>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"How_to_Create_a_Python_Generator\"><\/span><strong>How to Create a Python Generator?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A\u00a0Python generator\u00a0is\u00a0created\u00a0like a\u00a0normal function\u00a0but we\u00a0do not use\u00a0the\u00a0return statement\u00a0in\u00a0generators.<\/p>\n<p>For generating a value, we use the\u00a0yield keyword. When we use the\u00a0yield keyword\u00a0inside a function, it\u00a0automatically\u00a0becomes a\u00a0generator function.<\/p>\n<p>Let us understand the working of a generator with a\u00a0simple generator.<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-k1\">def<\/span> <span class=\"enlighter-m0\">mygen<\/span><span class=\"enlighter-g1\">()<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield <\/span><span class=\"enlighter-n1\">10<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield <\/span><span class=\"enlighter-n1\">20<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield <\/span><span class=\"enlighter-n1\">40<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">f<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">gen = <\/span><span class=\"enlighter-m0\">mygen<\/span><span class=\"enlighter-g1\">()<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-m0\">next<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">gen<\/span><span class=\"enlighter-g1\">))<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-m0\">next<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">gen<\/span><span class=\"enlighter-g1\">))<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-m0\">next<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">gen<\/span><span class=\"enlighter-g1\">))<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-m0\">next<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">gen<\/span><span class=\"enlighter-g1\">))<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">10<br \/>\n20<br \/>\n40<br \/>\nTraceback (most recent call last):<br \/>\nFile\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u201cC:\/Users\/Techvidvan\/AppData\/Local\/Programs\/Python\/Python38-32\/test.py\u201d, line 11, in &lt;module&gt;<br \/>\nprint(next(gen))<br \/>\nStopIteration<\/div>\n<p>Here, the\u00a0mygen()\u00a0function is a\u00a0generator function\u00a0in which we used\u00a03 yield statements.<\/p>\n<p>The next() function used on the generator object returns the value of the first yield statement. Again calling the next() will then return the value from the second function and so on. When it gets exhausted the generator function raises the StopIteration exception.<\/p>\n<p>We can also use the\u00a0for loop\u00a0for easy\u00a0traversing\u00a0the\u00a0elements.<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-k1\">def<\/span> <span class=\"enlighter-m0\">mygen<\/span><span class=\"enlighter-g1\">()<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> n = <\/span><span class=\"enlighter-n1\">1<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield n<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> n+=<\/span><span class=\"enlighter-n1\">2<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield n<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> n+=<\/span><span class=\"enlighter-n1\">3<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield n<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield <\/span><span class=\"enlighter-s0\">&#8220;End&#8221;<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-k1\">for<\/span><span class=\"enlighter-text\"> n <\/span><span class=\"enlighter-k1\">in<\/span> <span class=\"enlighter-m0\">mygen<\/span><span class=\"enlighter-g1\">()<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">n<\/span><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"244f04e3-33e6-4676-9c5c-ca516f0c13cf\" class=\"_ap_apex_ad\" data-section=\"244f04e3-33e6-4676-9c5c-ca516f0c13cf\" data-xpath=\"\" data-section-id=\"4\" data-ap-network=\"adpTags\" data-render-time=\"1654873004029\" data-refresh-time=\"1654873006981\" data-timeout=\"322\">\n<div id=\"ADP_41886_970X250_244f04e3-33e6-4676-9c5c-ca516f0c13cf\" data-google-query-id=\"CN3ZmK6So_gCFVIWBgAd2egAVA\">\n<div id=\"google_ads_iframe_\/103512698,22462954816\/22659612884_0__container__\"><\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">1<br \/>\n3<br \/>\n6<br \/>\nEnd<\/div>\n<p>One thing to notice here is that when the\u00a0generator yields the values, it remembers the\u00a0value\u00a0of the\u00a0variable in\u00a0between\u00a0each call.<\/p>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"Python_Generators_with_Loops\"><\/span><strong>Python Generators with Loops<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The above examples were simple, only for understanding the\u00a0working\u00a0of the\u00a0generators. Now we will see\u00a0generators\u00a0with a\u00a0loop\u00a0that is more\u00a0practically applicable\u00a0for\u00a0creating\u00a0customized\u00a0iterable objects. We can use\u00a0for-loop\u00a0to\u00a0yield values.<\/p>\n<p>Let us generate a\u00a0sequence\u00a0of\u00a0Fibonacci numbers:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-k1\">def<\/span> <span class=\"enlighter-m0\">fib_sequence<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">n<\/span><span class=\"enlighter-g1\">)<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> a,b = <\/span><span class=\"enlighter-n1\">0<\/span><span class=\"enlighter-text\">,<\/span><span class=\"enlighter-n1\">1<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-k1\">for<\/span><span class=\"enlighter-text\"> i <\/span><span class=\"enlighter-k1\">in<\/span> <span class=\"enlighter-m0\">range<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">n<\/span><span class=\"enlighter-g1\">)<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> yield a<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> a,b = b,a+b<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-k1\">for<\/span><span class=\"enlighter-text\"> i <\/span><span class=\"enlighter-k1\">in<\/span> <span class=\"enlighter-m0\">fib_sequence<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-n1\">10<\/span><span class=\"enlighter-g1\">)<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">i<\/span><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">0<br \/>\n1<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n5<br \/>\n8<br \/>\n13<br \/>\n21<br \/>\n34<\/div>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"Using_Generators_with_List_Function\"><\/span><strong>Using Generators with List() Function<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div id=\"2037d895-d0de-436b-8d07-5f4042b68320\" class=\"_ap_apex_ad\" data-section=\"2037d895-d0de-436b-8d07-5f4042b68320\" data-xpath=\"\" data-section-id=\"6\" data-ap-network=\"adpTags\" data-render-time=\"1654873004031\" data-refresh-time=\"1654873007433\" data-timeout=\"378\">\n<div id=\"ADP_41886_970X250_2037d895-d0de-436b-8d07-5f4042b68320\" data-google-query-id=\"CNStlK6So_gCFVIWBgAd2egAVA\">\n<div id=\"google_ads_iframe_\/103512698,22462954816\/22659525109_0__container__\">We can use the lits() function\u00a0to\u00a0yield\u00a0all the\u00a0values\u00a0into a\u00a0list. This is very\u00a0handy\u00a0sometimes. We can try this by using the same\u00a0fib_sequence()\u00a0generator function\u00a0we made.<\/div>\n<\/div>\n<\/div>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span> <span class=\"enlighter-m0\">list<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-m0\">fib_sequence<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-n1\">20<\/span><span class=\"enlighter-g1\">))<\/span> <span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]<\/div>\n<div style=\"text-align: center;\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/course\/python-programming-course\/\" target=\"_blank\" rel=\"noopener\">&#8220;Get hands-on with our python course &#8211; sign up for a free demo!&#8221;<\/a><\/strong><\/div>\n<\/div>\n<\/div>\n<div class=\"entry themeform fittexted_for_entry\">\n<div class=\"entry-inner\">\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"Python_Generator_Expressions\"><\/span><strong>Python Generator Expressions<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If you are familiar with\u00a0list\u00a0comprehensions then this would be very easy. We have even a more shorthand technique\u00a0to\u00a0create python generators.<\/p>\n<p>In\u00a0list comprehensions\u00a0we use\u00a0[] brackets\u00a0while in\u00a0generator expressions\u00a0we use\u00a0() parenthesis. They are used at places where we quickly want to use a\u00a0generator\u00a0right away.<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">gen = <\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">x**<\/span><span class=\"enlighter-n1\">2<\/span> <span class=\"enlighter-k1\">for<\/span><span class=\"enlighter-text\"> x <\/span><span class=\"enlighter-k1\">in<\/span> <span class=\"enlighter-m0\">range<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-n1\">10<\/span><span class=\"enlighter-g1\">))<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-k1\">for<\/span><span class=\"enlighter-text\"> x <\/span><span class=\"enlighter-k1\">in<\/span><span class=\"enlighter-text\"> gen:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">x<\/span><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">0<br \/>\n1<br \/>\n4<br \/>\n9<br \/>\n16<br \/>\n25<br \/>\n36<br \/>\n49<br \/>\n64<br \/>\n81<\/div>\n<p>Here, we created a generator that is used to\u00a0generate\u00a0a\u00a0square\u00a0of\u00a00-9 numbers. If we\u00a0print\u00a0the\u00a0gen object\u00a0then we see that it is a\u00a0generator object.<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-eclipse enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">gen<\/span><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"2efe5077-58c4-49cd-98e9-4657a9604e46\" class=\"_ap_apex_ad\" data-section=\"2efe5077-58c4-49cd-98e9-4657a9604e46\" data-xpath=\"\" data-section-id=\"8\" data-ap-network=\"adpTags\" data-render-time=\"1654873004034\" data-refresh-time=\"1654873008496\" data-timeout=\"441\">\n<div id=\"ADP_41886_970X250_2efe5077-58c4-49cd-98e9-4657a9604e46\" data-google-query-id=\"CN_ZmK6So_gCFVIWBgAd2egAVA\">\n<div id=\"google_ads_iframe_\/103512698,22462954816\/22659525112_0__container__\"><\/div>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"code-output\">&lt;generator object &lt;genexpr&gt; at 0x05F3F7D0&gt;<\/div>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"Why_Generators_are_Used\"><\/span><strong>Why Generators are Used?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Generators are used to\u00a0create iterable\u00a0objects.<\/li>\n<li>The generators\u00a0yield\u00a0one value\u00a0at a time from a\u00a0set of items.<\/li>\n<li>So they are\u00a0memory efficient\u00a0as they require\u00a0less space\u00a0and we don\u2019t have to store everything at once.<\/li>\n<li>It is also easier to\u00a0implement\u00a0an\u00a0infinite generation\u00a0of\u00a0series.<\/li>\n<li>We cannot store\u00a0infinite series\u00a0of a sequence in\u00a0memory\u00a0so with generators we can continuously\u00a0generate values\u00a0or\u00a0infinite values(theoretically)<\/li>\n<li>Generators are also helpful in\u00a0reading\u00a0and\u00a0performing operations\u00a0on\u00a0large files.<\/li>\n<li>We can use\u00a0generators\u00a0to\u00a0effectively\u00a0write\u00a0code\u00a0for our\u00a0programs.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/course\/python-programming-course\/\" target=\"_blank\" rel=\"noopener\">&#8220;Ready to take your python skills to the next level? Sign up for a free demo today!&#8221;<\/a><\/strong><\/p>\n<h2 class=\"fittexted_for_content_h3\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span><strong>Summary<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Python Generators\u00a0are often\u00a0misinterpreted\u00a0as a hard topic but in fact, they are very useful and easy, once you start understanding how it works. We saw what Python generators are,\u00a0how\u00a0to\u00a0create them\u00a0and\u00a0iterate over generators\u00a0with\u00a0for loops.<\/p>\n<p><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-25520910 size-full\" src=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square.png\" alt=\"Python and Machine Learning Square\" width=\"345\" height=\"345\" srcset=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square.png 345w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-300x300.png 300w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-150x150.png 150w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-24x24.png 24w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-48x48.png 48w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-96x96.png 96w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-75x75.png 75w\" sizes=\"auto, (max-width: 345px) 100vw, 345px\" \/><\/a><\/p>\n<p>Moreover, we saw an even more easy way to create generators i.e.\u00a0generators expression.<\/p>\n<h4><strong>Related Articles<\/strong><\/h4>\n<div class=\"table-responsive wprt_style_display\">\n<div class=\"table-responsive wprt_style_display\">\n<div class=\"table-responsive wprt_style_display\">\n<div class=\"table-responsive wprt_style_display\">\n<div class=\"table-responsive wprt_style_display\">\n<table class=\"table\" dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"329\" \/>\n<col width=\"309\" \/><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Syllabus&quot;}\" data-sheets-hyperlink=\"https:\/\/entri.app\/blog\/kerala-psc-village-field-assistant-vfa-syllabus-exam-pattern\/\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/blog\/step-by-step-guide-for-getting-a-job-as-a-python-developer\/42\" target=\"_blank\" rel=\"noopener\">A Step-by-Step Guide for Getting a Job as a Python Developer<\/a><\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Mock Test&quot;}\" data-sheets-hyperlink=\"https:\/\/entri.app\/blog\/kerala-psc-vfa-free-mock-test\/\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/blog\/learn-about-python-keywords-and-identifiers-an-overview\/\" target=\"_blank\" rel=\"noopener\">Learn About Python Keywords and Identifiers<\/a><\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Exam Date&quot;}\" data-sheets-hyperlink=\"https:\/\/entri.app\/blog\/kerala-psc-vfa-exam-date\/\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/blog\/type-conversion-in-python\/\" target=\"_blank\" rel=\"noopener\">What is Type Conversion in Python?<\/a><\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Video Course&quot;}\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/blog\/constructors-and-destructors-in-python\/\" target=\"_blank\" rel=\"noopener\">What are Constructors and Destructors in Python?<\/a><\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Application Form&quot;}\" data-sheets-hyperlink=\"https:\/\/entri.app\/blog\/kerala-psc-vfa-apply-online\/\"><strong><a class=\"in-cell-link\" href=\"https:\/\/entri.app\/blog\/python-online-course\/\" target=\"_blank\" rel=\"noopener\">Best Online Python Course with Certificate<\/a><\/strong><\/td>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Kerala PSC VFA Study Materials&quot;}\" data-sheets-hyperlink=\"https:\/\/entri.app\/blog\/kerala-psc-vfa-study-material\/\"><a href=\"https:\/\/entri.app\/blog\/switch-case-in-python-switch-function\/\"><strong>Switch Case in Python<\/strong><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Generators have been an important part of python ever since they were introduced with PEP 255. Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates [&hellip;]<\/p>\n","protected":false},"author":111,"featured_media":25528010,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[802,1888],"tags":[],"class_list":["post-25527917","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-python-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What are Generators in Python and How to use them? - Entri Blog<\/title>\n<meta name=\"description\" content=\"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What are Generators in Python and How to use them? - Entri Blog\" \/>\n<meta property=\"og:description\" content=\"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\" \/>\n<meta property=\"og:site_name\" content=\"Entri Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/entri.me\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-11T14:05:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-04T10:53:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png\" \/>\n\t<meta property=\"og:image:width\" content=\"820\" \/>\n\t<meta property=\"og:image:height\" content=\"615\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Feeba Mahin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@entri_app\" \/>\n<meta name=\"twitter:site\" content=\"@entri_app\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Feeba Mahin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\"},\"author\":{\"name\":\"Feeba Mahin\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36\"},\"headline\":\"What are Generators in Python and How to use them?\",\"datePublished\":\"2022-06-11T14:05:46+00:00\",\"dateModified\":\"2023-05-04T10:53:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\"},\"wordCount\":1426,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png\",\"articleSection\":[\"Articles\",\"Python Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\",\"url\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\",\"name\":\"What are Generators in Python and How to use them? - Entri Blog\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png\",\"datePublished\":\"2022-06-11T14:05:46+00:00\",\"dateModified\":\"2023-05-04T10:53:46+00:00\",\"description\":\"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.\",\"breadcrumb\":{\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png\",\"width\":820,\"height\":615,\"caption\":\"What are Generators in Python and How to use them\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/entri.app\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Programming\",\"item\":\"https:\/\/entri.app\/blog\/category\/python-programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"What are Generators in Python and How to use them?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/entri.app\/blog\/#website\",\"url\":\"https:\/\/entri.app\/blog\/\",\"name\":\"Entri Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/entri.app\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/entri.app\/blog\/#organization\",\"name\":\"Entri App\",\"url\":\"https:\/\/entri.app\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"width\":989,\"height\":446,\"caption\":\"Entri App\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/entri.me\/\",\"https:\/\/x.com\/entri_app\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36\",\"name\":\"Feeba Mahin\",\"url\":\"https:\/\/entri.app\/blog\/author\/feeba123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What are Generators in Python and How to use them? - Entri Blog","description":"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/","og_locale":"en_US","og_type":"article","og_title":"What are Generators in Python and How to use them? - Entri Blog","og_description":"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.","og_url":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/","og_site_name":"Entri Blog","article_publisher":"https:\/\/www.facebook.com\/entri.me\/","article_published_time":"2022-06-11T14:05:46+00:00","article_modified_time":"2023-05-04T10:53:46+00:00","og_image":[{"width":820,"height":615,"url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png","type":"image\/png"}],"author":"Feeba Mahin","twitter_card":"summary_large_image","twitter_creator":"@entri_app","twitter_site":"@entri_app","twitter_misc":{"Written by":"Feeba Mahin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#article","isPartOf":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/"},"author":{"name":"Feeba Mahin","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36"},"headline":"What are Generators in Python and How to use them?","datePublished":"2022-06-11T14:05:46+00:00","dateModified":"2023-05-04T10:53:46+00:00","mainEntityOfPage":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/"},"wordCount":1426,"commentCount":0,"publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"image":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png","articleSection":["Articles","Python Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/","url":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/","name":"What are Generators in Python and How to use them? - Entri Blog","isPartOf":{"@id":"https:\/\/entri.app\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage"},"image":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png","datePublished":"2022-06-11T14:05:46+00:00","dateModified":"2023-05-04T10:53:46+00:00","description":"Generator in python are special routine that can be used to control the iteration behaviour of a loop. A generator is similar to a function returning an array. A generator has parameter, which we can call and it generates a sequence of numbers.","breadcrumb":{"@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#primaryimage","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/What-are-Generators-in-Python-and-How-to-use-them.png","width":820,"height":615,"caption":"What are Generators in Python and How to use them"},{"@type":"BreadcrumbList","@id":"https:\/\/entri.app\/blog\/what-are-generators-in-python-and-how-to-use-them\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/entri.app\/blog\/"},{"@type":"ListItem","position":2,"name":"Python Programming","item":"https:\/\/entri.app\/blog\/category\/python-programming\/"},{"@type":"ListItem","position":3,"name":"What are Generators in Python and How to use them?"}]},{"@type":"WebSite","@id":"https:\/\/entri.app\/blog\/#website","url":"https:\/\/entri.app\/blog\/","name":"Entri Blog","description":"","publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/entri.app\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/entri.app\/blog\/#organization","name":"Entri App","url":"https:\/\/entri.app\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","width":989,"height":446,"caption":"Entri App"},"image":{"@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/entri.me\/","https:\/\/x.com\/entri_app"]},{"@type":"Person","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36","name":"Feeba Mahin","url":"https:\/\/entri.app\/blog\/author\/feeba123\/"}]}},"_links":{"self":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/users\/111"}],"replies":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/comments?post=25527917"}],"version-history":[{"count":8,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527917\/revisions"}],"predecessor-version":[{"id":25559583,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527917\/revisions\/25559583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media\/25528010"}],"wp:attachment":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media?parent=25527917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/categories?post=25527917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/tags?post=25527917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}