|
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-02-10T00:00:00+00:00</updated> |
| 8 | + <updated>2023-02-28T00:00:00+00:00</updated> |
9 | 9 | <id>https://learnbyexample.github.io/atom.xml</id>
|
| 10 | + <entry xml:lang="en"> |
| 11 | + <title>Python tip 24: modifying list using insert and slice</title> |
| 12 | + <published>2023-02-28T00:00:00+00:00</published> |
| 13 | + <updated>2023-02-28T00:00:00+00:00</updated> |
| 14 | + <link rel="alternate" href="https://learnbyexample.github.io/tips/python-tip-24/" type="text/html"/> |
| 15 | + <id>https://learnbyexample.github.io/tips/python-tip-24/</id> |
| 16 | + <content type="html"><p>The <code>insert()</code> list method helps to insert an object before the given index. Negative indexing is also supported.</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>books </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#d07711;">&#39;Sourdough&#39;</span><span>, </span><span style="color:#d07711;">&#39;Sherlock Holmes&#39;</span><span>, </span><span style="color:#d07711;">&#39;Cradle&#39;</span><span>] |
| 18 | +</span><span> |
| 19 | +</span><span style="color:#7f8989;"># same as: books.insert(-1, &#39;The Martian&#39;) |
| 20 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>books.</span><span style="color:#5597d6;">insert</span><span>(</span><span style="color:#b3933a;">2</span><span>, </span><span style="color:#d07711;">&#39;The Martian&#39;</span><span>) |
| 21 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>books |
| 22 | +</span><span>[</span><span style="color:#d07711;">&#39;Sourdough&#39;</span><span>, </span><span style="color:#d07711;">&#39;Sherlock Holmes&#39;</span><span>, </span><span style="color:#d07711;">&#39;The Martian&#39;</span><span>, </span><span style="color:#d07711;">&#39;Cradle&#39;</span><span>] |
| 23 | +</span><span> |
| 24 | +</span><span style="color:#7f8989;"># index &gt;= list-length will append the object at the end |
| 25 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>books.</span><span style="color:#5597d6;">insert</span><span>(</span><span style="color:#b3933a;">1000</span><span>, </span><span style="color:#d07711;">&#39;Legends &amp; Lattes&#39;</span><span>) |
| 26 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>books |
| 27 | +</span><span>[</span><span style="color:#d07711;">&#39;Sourdough&#39;</span><span>, </span><span style="color:#d07711;">&#39;Sherlock Holmes&#39;</span><span>, </span><span style="color:#d07711;">&#39;The Martian&#39;</span><span>, </span><span style="color:#d07711;">&#39;Cradle&#39;</span><span>, </span><span style="color:#d07711;">&#39;Legends &amp; Lattes&#39;</span><span>] |
| 28 | +</span></code></pre> |
| 29 | +<p>You can use slicing notation to modify one or more list elements. The list will automatically shrink or expand as needed. Here are some examples:</p> |
| 30 | +<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>nums </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#b3933a;">1</span><span>, </span><span style="color:#b3933a;">4</span><span>, </span><span style="color:#b3933a;">6</span><span>, </span><span style="color:#b3933a;">22</span><span>, </span><span style="color:#b3933a;">3</span><span>, </span><span style="color:#b3933a;">5</span><span>] |
| 31 | +</span><span> |
| 32 | +</span><span style="color:#7f8989;"># modify a single element |
| 33 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums[</span><span style="color:#b3933a;">0</span><span>] </span><span style="color:#72ab00;">= </span><span style="color:#b3933a;">100 |
| 34 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums |
| 35 | +</span><span>[</span><span style="color:#b3933a;">100</span><span>, </span><span style="color:#b3933a;">4</span><span>, </span><span style="color:#b3933a;">6</span><span>, </span><span style="color:#b3933a;">22</span><span>, </span><span style="color:#b3933a;">3</span><span>, </span><span style="color:#b3933a;">5</span><span>] |
| 36 | +</span><span> |
| 37 | +</span><span style="color:#7f8989;"># modify the last three elements |
| 38 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums[</span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">3</span><span>:] </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">1</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">2</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">3</span><span>] |
| 39 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums |
| 40 | +</span><span>[</span><span style="color:#b3933a;">100</span><span>, </span><span style="color:#b3933a;">4</span><span>, </span><span style="color:#b3933a;">6</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">1</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">2</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">3</span><span>] |
| 41 | +</span><span> |
| 42 | +</span><span style="color:#7f8989;"># elements at index 1, 2 and 3 are replaced with a single object |
| 43 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums[</span><span style="color:#b3933a;">1</span><span>:</span><span style="color:#b3933a;">4</span><span>] </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#b3933a;">2000</span><span>] |
| 44 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums |
| 45 | +</span><span>[</span><span style="color:#b3933a;">100</span><span>, </span><span style="color:#b3933a;">2000</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">2</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">3</span><span>] |
| 46 | +</span><span> |
| 47 | +</span><span style="color:#7f8989;"># element at index 1 is replaced with multiple elements |
| 48 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums[</span><span style="color:#b3933a;">1</span><span>:</span><span style="color:#b3933a;">2</span><span>] </span><span style="color:#72ab00;">= </span><span>[</span><span style="color:#b3933a;">3.14</span><span>, </span><span style="color:#b3933a;">4.13</span><span>, </span><span style="color:#b3933a;">6.78</span><span>] |
| 49 | +</span><span style="color:#72ab00;">&gt;&gt;&gt; </span><span>nums |
| 50 | +</span><span>[</span><span style="color:#b3933a;">100</span><span>, </span><span style="color:#b3933a;">3.14</span><span>, </span><span style="color:#b3933a;">4.13</span><span>, </span><span style="color:#b3933a;">6.78</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">2</span><span>, </span><span style="color:#72ab00;">-</span><span style="color:#b3933a;">3</span><span>] |
| 51 | +</span></code></pre> |
| 52 | +<p><img src="/images/info.svg" alt="info" /> RHS must be an iterable when you use slicing notation with <code>:</code>, even when LHS refers to a single element. For example, <code>nums[1:2] = 100</code> is not valid.</p> |
| 53 | +<p><strong>Video demo</strong>:</p> |
| 54 | +<p align="center"><iframe width="560" height="315" loading="lazy" src="https://www.youtube.com/embed/fyFX1nBCeS4" title="YouTube video player" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p> |
| 55 | +<br> |
| 56 | +<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> |
| 57 | +</content> |
| 58 | + </entry> |
10 | 59 | <entry xml:lang="en">
|
11 | 60 | <title>CLI tip 23: recursive filename matching with globstar</title>
|
12 | 61 | <published>2023-02-10T00:00:00+00:00</published>
|
@@ -2113,6 +2162,10 @@ Specifying a greater than <code>0</code> start index when using
|
2113 | 2162 | <p>I consider myself pretty experienced at shell-fu and capable of doing most things I set out to achieve in either bash scripts or fearless one-liners. However, my awk is rudimentary at best, I think mostly because it's such an unforgiving environment to experiment in. These books you've written are great for a bit of first principles insight and then quickly building up to functional usage. I will have no hesitation in referring colleagues to them!</p>
|
2114 | 2163 | <p>— <a href="https://news.ycombinator.com/item?id=31930840">feedback on Hacker News</a></p>
|
2115 | 2164 | </blockquote>
|
| 2165 | +<blockquote> |
| 2166 | +<p>Thank you for choosing to write and share your knowledge. I read your books on CLI and sed - I think they are very comprehensive and very well explained. Keep up the great work</p> |
| 2167 | +<p>— <a href="https://twitter.com/le_anh_phuong/status/1628149732760604672">feedback on twitter</a></p> |
| 2168 | +</blockquote> |
2116 | 2169 | <br>
|
2117 | 2170 | <h1 id="100-page-python-intro"><p style="color: #ff9933">100 Page Python Intro</h1>
|
2118 | 2171 | <p>Short, introductory guide for the Python programming language, suited for those already familiar with programming basics.</p>
|
|
0 commit comments