|
5 | 5 | <link href="https://learnbyexample.github.io/atom.xml" rel="self" type="application/atom+xml"/>
|
6 | 6 | <link href="https://learnbyexample.github.io"/>
|
7 | 7 | <generator uri="https://www.getzola.org/">Zola</generator>
|
8 |
| - <updated>2023-07-19T00:00:00+00:00</updated> |
| 8 | + <updated>2023-07-25T00:00:00+00:00</updated> |
9 | 9 | <id>https://learnbyexample.github.io/atom.xml</id>
|
| 10 | + <entry xml:lang="en"> |
| 11 | + <title>Python tip 31: next() function</title> |
| 12 | + <published>2023-07-25T00:00:00+00:00</published> |
| 13 | + <updated>2023-07-25T00:00:00+00:00</updated> |
| 14 | + <link rel="alternate" href="https://learnbyexample.github.io/tips/python-tip-31/" type="text/html"/> |
| 15 | + <id>https://learnbyexample.github.io/tips/python-tip-31/</id> |
| 16 | + <content type="html"><p>The <a href="https://docs.python.org/3/library/functions.html#next"><code>next()</code></a> builtin function can be used on an iterator (but not iterables) to retrieve the next item. Once you have exhausted an iterator, trying to get another item will result in a <code>StopIteration</code> exception. Here's an example:</p> |
| 17 | +<pre data-lang="python" style="background-color:#f5f5f5;color:#1f1f1f;" class="language-python "><code class="language-python" data-lang="python"><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>names </span><span style="color:#72ab00;">= </span><span>(m </span><span style="color:#72ab00;">for </span><span>m </span><span style="color:#72ab00;">in </span><span style="color:#b39f04;">dir</span><span>(</span><span style="color:#a2a001;">tuple</span><span>) </span><span style="color:#72ab00;">if </span><span style="color:#d07711;">&#39;__&#39; </span><span style="color:#72ab00;">not in </span><span>m) |
| 18 | +</span><span> |
| 19 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span style="color:#b39f04;">next</span><span>(names) |
| 20 | +</span><span style="color:#d07711;">&#39;count&#39; |
| 21 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span style="color:#b39f04;">next</span><span>(names) |
| 22 | +</span><span style="color:#d07711;">&#39;index&#39; |
| 23 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span style="color:#b39f04;">next</span><span>(names) |
| 24 | +</span><span style="color:#5597d6;">Traceback </span><span>(most recent call last): |
| 25 | +</span><span> File </span><span style="color:#d07711;">&quot;&lt;stdin&gt;&quot;</span><span>, line </span><span style="color:#b3933a;">1</span><span>, </span><span style="color:#72ab00;">in &lt;</span><span>module</span><span style="color:#72ab00;">&gt; |
| 26 | +</span><span style="color:#a2a001;">StopIteration |
| 27 | +</span></code></pre> |
| 28 | +<p>Here's a practical example to get a random item from a <code>list</code> without repetition:</p> |
| 29 | +<pre data-lang="python" style="background-color:#f5f5f5;color:#1f1f1f;" class="language-python "><code class="language-python" data-lang="python"><span style="color:#72ab00;">&gt;&gt;&gt; import </span><span>random |
| 30 | +</span><span> |
| 31 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>names </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#d07711;">&#39;Jo&#39;</span><span>, </span><span style="color:#d07711;">&#39;Ravi&#39;</span><span>, </span><span style="color:#d07711;">&#39;Joe&#39;</span><span>, </span><span style="color:#d07711;">&#39;Raj&#39;</span><span>, </span><span style="color:#d07711;">&#39;Jon&#39;</span><span>] |
| 32 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>random.</span><span style="color:#5597d6;">shuffle</span><span>(names) |
| 33 | +</span><span> |
| 34 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>random_name </span><span style="color:#72ab00;">= </span><span style="color:#b39f04;">iter</span><span>(names) |
| 35 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span style="color:#b39f04;">next</span><span>(random_name) |
| 36 | +</span><span style="color:#d07711;">&#39;Jon&#39; |
| 37 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span style="color:#b39f04;">next</span><span>(random_name) |
| 38 | +</span><span style="color:#d07711;">&#39;Ravi&#39; |
| 39 | +</span></code></pre> |
| 40 | +<p>You can set a default value to be returned instead of the <code>StopIteration</code> exception. Here's an example:</p> |
| 41 | +<pre data-lang="bash" style="background-color:#f5f5f5;color:#1f1f1f;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> letters </span><span style="color:#72ab00;">= </span><span style="color:#5597d6;">iter</span><span>(</span><span style="color:#d07711;">&#39;fig&#39;</span><span>) |
| 42 | +</span><span> |
| 43 | +</span><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> next(</span><span style="color:#5597d6;">letters, </span><span style="color:#d07711;">&#39;a&#39;</span><span>) |
| 44 | +</span><span style="color:#d07711;">&#39;f&#39; |
| 45 | +</span><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> next(</span><span style="color:#5597d6;">letters, </span><span style="color:#d07711;">&#39;a&#39;</span><span>) |
| 46 | +</span><span style="color:#d07711;">&#39;i&#39; |
| 47 | +</span><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> next(</span><span style="color:#5597d6;">letters, </span><span style="color:#d07711;">&#39;a&#39;</span><span>) |
| 48 | +</span><span style="color:#d07711;">&#39;g&#39; |
| 49 | +</span><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> next(</span><span style="color:#5597d6;">letters, </span><span style="color:#d07711;">&#39;a&#39;</span><span>) |
| 50 | +</span><span style="color:#d07711;">&#39;a&#39; |
| 51 | +</span><span style="color:#72ab00;">&gt;&gt;&gt;</span><span> next(</span><span style="color:#5597d6;">letters, </span><span style="color:#d07711;">&#39;a&#39;</span><span>) |
| 52 | +</span><span style="color:#d07711;">&#39;a&#39; |
| 53 | +</span></code></pre> |
| 54 | +<p><strong>Video demo</strong>:</p> |
| 55 | +<p align="center"><iframe width="560" height="315" loading="lazy" src="https://www.youtube.com/embed/CxgjN1V5vA0" title="YouTube video player" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p> |
| 56 | +<br> |
| 57 | +<p><img src="/images/info.svg" alt="info" /> See also my <a href="https://github.com/learnbyexample/100_page_python_intro">100 Page Python Intro</a> ebook.</p> |
| 58 | +</content> |
| 59 | + </entry> |
10 | 60 | <entry xml:lang="en">
|
11 | 61 | <title>Vim tip 29: greedy quantifiers</title>
|
12 | 62 | <published>2023-07-19T00:00:00+00:00</published>
|
|
0 commit comments