Create an account


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] How to Retrieve a Single Element from a Python Generator

#1
How to Retrieve a Single Element from a Python Generator

<div>
<div class="kk-star-ratings kksr-auto kksr-align-left kksr-valign-top" data-payload="{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;728806&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;top&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;2&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;5\/5 - (2 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;width&quot;:&quot;142.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}">
<div class="kksr-stars">
<div class="kksr-stars-inactive">
<div class="kksr-star" data-star="1" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="2" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="3" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="4" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="5" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
</p></div>
<div class="kksr-stars-active" style="width: 142.5px;">
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
</p></div>
</div>
<div class="kksr-legend" style="font-size: 19.2px;"> 5/5 – (2 votes) </div>
</div>
<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio">This article will show you how to retrieve a single <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> element in Python. Before moving forward, let’s review what a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> does.</p>
<h2>Quick Recap Generators</h2>
<p class="has-text-align-justify has-base-2-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Definition Generator</strong>: A <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> is commonly used when processing vast amounts of data. This function uses minimal memory and produces results in less time than a standard function.</p>
<p class="has-text-align-justify has-base-2-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Definition <code>yield</code></strong>: The <a rel="noreferrer noopener" href="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" data-type="URL" data-id="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" target="_blank"><code>yield</code></a> keyword returns a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> object instead of a value.</p>
<p class="has-text-align-justify has-base-2-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Definition <code>next()</code></strong>: This function takes an <a href="https://blog.finxter.com/3-top-design-patterns-in-python-singletons-decorators-and-iterators/" data-type="post" data-id="151218" target="_blank" rel="noreferrer noopener">iterator</a> and an optional default value. Each time this function is called, it returns the next iterator item until all items are exhausted. Once exhausted, it returns the default value passed or a <code>StopIteration</code> Error.</p>
<h2 class="wp-embed-aspect-16-9 wp-has-aspect-ratio">Problem Formulation and Solution Overview</h2>
<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-global-color-8-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4ac.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Question</strong>: How would we write code to retrieve and return a single element from a <code><a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">Generator</a></code><em>?</em></p>
<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio">We can accomplish this task by one of the following options:</p>
<ul type="video" class="wp-embed-aspect-16-9 wp-has-aspect-ratio">
<li><strong>Method 1</strong>: Use a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> and <a rel="noreferrer noopener" href="https://blog.finxter.com/how-to-generate-random-integers-in-python/" data-type="URL" data-id="https://blog.finxter.com/how-to-generate-random-integers-in-python/" target="_blank"><code>random.randint()</code></a></li>
<li><strong>Method 2</strong>: Use a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> and <a rel="noreferrer noopener" href="https://docs.python.org/3/library/itertools.html" data-type="URL" data-id="https://docs.python.org/3/library/itertools.html" target="_blank"><code>itertools.islice()</code></a></li>
<li><strong>Method 3</strong>: Use a <a rel="noreferrer noopener" href="https://blog.finxter.com/python-lists/" target="_blank"><code>list</code></a>, <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator comprehension</a> and <a rel="noreferrer noopener" href="https://blog.finxter.com/introduction-to-slicing-in-python/" target="_blank">slicing</a></li>
<li><strong>Method 4</strong>: Use a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> and a <a rel="noreferrer noopener" href="https://blog.finxter.com/python-loops/" data-type="URL" data-id="https://blog.finxter.com/python-loops/" target="_blank"><code>for</code></a> loop</li>
</ul>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Method 1: Use a Generator and random.randint()</h2>
<p class="has-global-color-8-background-color has-background">This example uses a <code><a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">Genera</a></code><a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">t</a><code><a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">or</a></code> and the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-random-module/" data-type="URL" data-id="https://blog.finxter.com/python-random-module/" target="_blank"></a><a rel="noreferrer noopener" href="https://blog.finxter.com/how-to-generate-random-integers-in-python/" data-type="URL" data-id="https://blog.finxter.com/how-to-generate-random-integers-in-python/" target="_blank"><code>random.randint()</code></a> function to return a random single element.</p>
<p>Let’s say we want to start a weekly in-house lottery called <code>LottoOne</code> (yeah — the lottery naming doesn’t care about Python’s naming conventions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f40d.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />). </p>
<p>The code below will generate and return one (1) random element (an integer): the winning number for the week. </p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="3-5,7-8" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import random def LottoOne(): num = random.randint(1, 50) yield print(f'The Winning Number for the Week is: {num}!') gen = LottoOne()
next(gen)</pre>
<p>The first line in the above code imports the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-random-module/" data-type="URL" data-id="https://blog.finxter.com/python-random-module/" target="_blank">random</a> library. This library allows the generation of random numbers using the <a rel="noreferrer noopener" href="https://blog.finxter.com/how-to-generate-random-integers-in-python/" data-type="URL" data-id="https://blog.finxter.com/how-to-generate-random-integers-in-python/" target="_blank"><code>random.randint()</code></a> function.</p>
<p>On the following line, an instance of <code>LottoOne</code> is instantiated and saved to the variable <code>gen</code>. If output to the terminal, an object similar to that shown below will display.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>&lt;generator object LottoOne at 0x00000236B9686880></code></td>
</tr>
</tbody>
</table>
</figure>
<p>Since we only want the first randomly generated number, the code calls the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-next/#:~:text=The%20next(iterator)%20function%20is,t%20provide%20a%20next%20value." data-type="URL" data-id="https://blog.finxter.com/python-next/#:~:text=The%20next(iterator)%20function%20is,t%20provide%20a%20next%20value." target="_blank"><code>next()</code></a> function once and passes it one (1) argument, the object <code>gen</code>. The results are output to the terminal.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>The Winning Number for the Week is: 44</code></td>
</tr>
</tbody>
</table>
</figure>
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube"><a href="https://blog.finxter.com/how-to-retrieve-a-single-element-from-a-python-generator/"><img src="https://blog.finxter.com/wp-content/plugins/wp-youtube-lyte/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F2Ls0b1gjz2A%2Fhqdefault.jpg" alt="YouTube Video"></a><figcaption></figcaption></figure>
<p class="has-base-background-color has-background"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f449.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Recommended Tutorial</strong>: <a href="https://blog.finxter.com/an-introduction-to-python-classes-inheritance-encapsulation-and-polymorphism/" data-type="post" data-id="30977" target="_blank" rel="noreferrer noopener">An Introduction to Python Classes</a></p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Method 2: Use a Generator and islice()</h2>
<p class="has-global-color-8-background-color has-background">This example uses a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a> and the <a rel="noreferrer noopener" href="https://docs.python.org/3/library/itertools.html" data-type="URL" data-id="https://docs.python.org/3/library/itertools.html" target="_blank"><code>itertools.islice()</code></a> function to return a single element.</p>
<p>If you know what number you need to return from a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator</a>, it can be referenced directly, as shown in the code below.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="4-5" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import itertools
from itertools import islice gen = (x for x in range(1, 50))
res = next(itertools.islice(gen, 2, None))
print(res)</pre>
<p>The first two (2) lines in the above code import the <code><a rel="noreferrer noopener" href="https://blog.finxter.com/iterators-iterables-and-itertools/" data-type="URL" data-id="https://blog.finxter.com/iterators-iterables-and-itertools/" target="_blank">itertools</a></code> library and its associated function <a rel="noreferrer noopener" href="https://docs.python.org/3/library/itertools.html" data-type="URL" data-id="https://docs.python.org/3/library/itertools.html" target="_blank"><code>islice()</code> </a>needed to achieve the desired result.</p>
<p>The following line creates a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator comprehension</a> using the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-range-function/" data-type="URL" data-id="https://blog.finxter.com/python-range-function/" target="_blank"><code>range()</code></a> function and passing it a start and stop position (1, 50-1). The results save to <code>gen</code> as an object. </p>
<p>If output to the terminal, an object similar to that shown below will display.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>&lt;generator object at 0x00000285D4DB68F0></code></td>
</tr>
</tbody>
</table>
</figure>
<p>Then, the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-next/#:~:text=The%20next(iterator)%20function%20is,t%20provide%20a%20next%20value." data-type="URL" data-id="https://blog.finxter.com/python-next/#:~:text=The%20next(iterator)%20function%20is,t%20provide%20a%20next%20value." target="_blank"><code>next()</code></a> function is called and passed one (1) argument, <a rel="noreferrer noopener" href="https://blog.finxter.com/iterators-iterables-and-itertools/" data-type="URL" data-id="https://blog.finxter.com/iterators-iterables-and-itertools/" target="_blank"><code>itertools.islice()</code></a>. </p>
<p>This function is then passed three (3) arguments: </p>
<ol>
<li>An iterator. In this case, <code>gen</code>.</li>
<li>The value to return, <code>idx</code>.</li>
<li>The default value. In this case, the keyword <code><a rel="noreferrer noopener" href="https://blog.finxter.com/python-cheat-sheet/" data-type="post" data-id="305" target="_blank">None</a></code>. Passing a default value prevents a <code>StopIteration</code> error from occurring when the end of the iterator has been reached.</li>
</ol>
<p>The results save to <code>res</code> and are output to the terminal.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td> <code>3</code></td>
</tr>
</tbody>
</table>
</figure>
<p>The value of 3 can be found at index 2 in <code>gen</code>.</p>
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube"><a href="https://blog.finxter.com/how-to-retrieve-a-single-element-from-a-python-generator/"><img src="https://blog.finxter.com/wp-content/plugins/wp-youtube-lyte/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FYyliq2-hVDw%2Fhqdefault.jpg" alt="YouTube Video"></a><figcaption></figcaption></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Method 3: Use a List, Generator Comprehension and slicing</h2>
<p class="has-global-color-8-background-color has-background">This example uses a <a rel="noreferrer noopener" href="https://blog.finxter.com/python-lists/" data-type="URL" data-id="https://blog.finxter.com/python-lists/" target="_blank">list</a>, <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">generator comprehension</a> and <a rel="noreferrer noopener" href="https://blog.finxter.com/introduction-to-slicing-in-python/" data-type="URL" data-id="https://blog.finxter.com/introduction-to-slicing-in-python/" target="_blank">slicing</a> to return a single element.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="1-2" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">gen = (i for i in range(1, 50))
res = list(gen)[3]
print(res)</pre>
<p>The first line in the above code creates a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">Generator Comprehension</a> using the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-range-function/" data-type="URL" data-id="https://blog.finxter.com/python-range-function/" target="_blank"><code>range()</code></a> function and passing it a start and stop position (1, 50-1). The results save to <code>gen</code> as an object. </p>
<p>If output to the terminal, an object similar to that shown below will display.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>&lt;generator object at 0x00000295D4DB78F0></code></td>
</tr>
</tbody>
</table>
</figure>
<p>The following line converts the object to a <a rel="noreferrer noopener" href="https://blog.finxter.com/python-lists/" data-type="URL" data-id="https://blog.finxter.com/python-lists/" target="_blank">list</a>. <a rel="noreferrer noopener" href="https://blog.finxter.com/introduction-to-slicing-in-python/" data-type="URL" data-id="https://blog.finxter.com/introduction-to-slicing-in-python/" target="_blank">Slicing</a> is then applied to retrieve the <a rel="noreferrer noopener" href="https://blog.finxter.com/python-lists/" data-type="URL" data-id="https://blog.finxter.com/python-lists/" target="_blank">list </a>element at position three (3). </p>
<p>The results save to <code>res</code> and are output to the terminal.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code> 4</code></td>
</tr>
</tbody>
</table>
</figure>
<p>The value of 4 can be found at index 3 in <code>gen</code>.</p>
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube"><a href="https://blog.finxter.com/how-to-retrieve-a-single-element-from-a-python-generator/"><img src="https://blog.finxter.com/wp-content/plugins/wp-youtube-lyte/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FD2ZueuWXST8%2Fhqdefault.jpg" alt="YouTube Video"></a><figcaption></figcaption></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Method 4: Use a Generator and a For Loop</h2>
<p class="has-global-color-8-background-color has-background">This example creates a <a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">Generator</a> whose content is output to the terminal until a specific number is found.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="1-4, 6, 8-11" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">def my_func(): yield 10 yield 20 yield 30 gen = my_func() for item in gen: if item == 20: print(item) break</pre>
<p>This first line of the above code declares the function <code>my_func()</code>. This function will return, via a <a rel="noreferrer noopener" href="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" data-type="URL" data-id="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" target="_blank"><code>yield</code></a> statement, a number (one/iteration).</p>
<p>Next, an object is declared and saved to <code>gen</code>. </p>
<p>If output to the terminal, an object similar to that shown below will display.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>&lt;generator object my_func at 0x0000022DE93D59A0></code></td>
</tr>
</tbody>
</table>
</figure>
<p>The following line instantiates a <a rel="noreferrer noopener" href="https://blog.finxter.com/python-loops/" data-type="URL" data-id="https://blog.finxter.com/python-loops/" target="_blank"><code>for</code></a> loop. This loop iterates through each <a rel="noreferrer noopener" href="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" data-type="URL" data-id="https://blog.finxter.com/yield-keyword-in-python-a-simple-illustrated-guide/" target="_blank"><code>yield</code></a> statement in <code>gen</code> until the <code>item </code>contains a value of 20. </p>
<p>This value is output to the terminal, and the loop terminates via the <code><a href="https://blog.finxter.com/how-to-stop-a-for-loop-in-python/" data-type="post" data-id="729488" target="_blank" rel="noreferrer noopener">break</a></code> statement.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<td><code>20</code></td>
</tr>
</tbody>
</table>
</figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Summary</h2>
<p>This article has provided four (4) ways to retrieve a single element from a <code><a rel="noreferrer noopener" href="https://blog.finxter.com/understanding-generators-in-python/" data-type="URL" data-id="https://blog.finxter.com/understanding-generators-in-python/" target="_blank">Generator</a></code> to select the best fit for your coding requirements.</p>
<p>Good Luck &amp; Happy Coding!</p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2>Programming Humor – Python</h2>
<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" width="518" height="588" src="https://blog.finxter.com/wp-content/uploads/2022/07/image-65.png" alt="" class="wp-image-471102" srcset="https://blog.finxter.com/wp-content/uploads/2022/07/image-65.png 518w, https://blog.finxter.com/wp-content/uplo...64x300.png 264w" sizes="(max-width: 518px) 100vw, 518px" /><figcaption><em>“I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I’m leaving you.”</em> — <a rel="noreferrer noopener" href="https://imgs.xkcd.com/comics/python.png" data-type="URL" data-id="https://imgs.xkcd.com/comics/python.png" target="_blank">xkcd</a></figcaption></figure>
</div></p>
</div>


https://www.sickgaming.net/blog/2022/09/...generator/
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

Forum software by © MyBB Theme © iAndrew 2016