Skip to content

Commit 8b2d95d

Browse files
committed
Regex, Format, Threading, NumPy
1 parent 48ca55b commit 8b2d95d

File tree

3 files changed

+21
-23
lines changed

3 files changed

+21
-23
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ Regex
361361
```python
362362
import re
363363
<str> = re.sub(r'<regex>', new, text, count=0) # Substitutes all occurrences with 'new'.
364-
<list> = re.findall(r'<regex>', text) # Returns all occurrences as strings.
364+
<list> = re.findall(r'<regex>', text) # Returns all occurrences of the pattern.
365365
<list> = re.split(r'<regex>', text, maxsplit=0) # Add brackets around regex to keep matches.
366366
<Match> = re.search(r'<regex>', text) # First occurrence of the pattern or None.
367367
<Match> = re.match(r'<regex>', text) # Searches only at the beginning of the text.
@@ -398,7 +398,7 @@ Format
398398
------
399399
```perl
400400
<str> = f'{<el_1>}, {<el_2>}' # Curly brackets can also contain expressions.
401-
<str> = '{}, {}'.format(<el_1>, <el_2>) # Or: '{0}, {a}'.format(<el_1>, a=<el_2>)
401+
<str> = '{}, {}'.format(<el_1>, <el_2>) # Same as '{0}, {a}'.format(<el_1>, a=<el_2>).
402402
<str> = '%s, %s' % (<el_1>, <el_2>) # Redundant and inferior C-style formatting.
403403
```
404404

@@ -2289,7 +2289,7 @@ with <lock>: # Enters the block by calling acq
22892289

22902290
### Thread Pool Executor
22912291
```python
2292-
<Exec> = ThreadPoolExecutor(max_workers=None) # Or: `with ThreadPoolExecutor() as <name>: ...`
2292+
<Exec> = ThreadPoolExecutor(max_workers=None) # Also `with ThreadPoolExecutor() as <name>: …`.
22932293
<iter> = <Exec>.map(<func>, <args_1>, ...) # Multithreaded and non-lazy map(). Keeps order.
22942294
<Futr> = <Exec>.submit(<func>, <arg_1>, ...) # Creates a thread and returns its Future obj.
22952295
<Exec>.shutdown() # Waits for all submitted threads to finish.
@@ -2663,7 +2663,7 @@ import numpy as np
26632663
```python
26642664
<view> = <array>.reshape(<shape>) # Also `<array>.shape = <shape>`.
26652665
<array> = <array>.flatten() # Also `<view> = <array>.ravel()`.
2666-
<view> = <array>.transpose() # Or: <array>.T
2666+
<view> = <array>.transpose() # Flips the table over its diagonal.
26672667
```
26682668

26692669
```python
@@ -2827,7 +2827,7 @@ from PIL import ImageDraw
28272827
* **Use `'fill=<color>'` to set the primary color.**
28282828
* **Use `'width=<int>'` to set the width of lines or contours.**
28292829
* **Use `'outline=<color>'` to set the color of the contours.**
2830-
* **Color can be an int, tuple, `'#rrggbb[aa]'` or a color name.**
2830+
* **Color can be an int, tuple, `'#rrggbb[aa]'` string or a color name.**
28312831

28322832

28332833
Animation
@@ -3421,7 +3421,7 @@ import plotly.express as px, pandas as pd
34213421
<Fig> = px.histogram(<DF>, x=col_keys, y=col_key) # Also color, nbins. All are optional.
34223422
```
34233423

3424-
#### Displays a line chart of total coronavirus deaths per million grouped by continent:
3424+
#### Displays a line chart of total COVID-19 deaths per million grouped by continent:
34253425

34263426
![Covid Deaths](web/covid_deaths.png)
34273427
<div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:312px; width:914px;"></div>
@@ -3440,7 +3440,7 @@ df = df.rename({'date': 'Date', 'Continent_Name': 'Continent'}, axis='columns')
34403440
px.line(df, x='Date', y='Total Deaths per Million', color='Continent')
34413441
```
34423442

3443-
#### Displays a multi-axis line chart of total coronavirus cases and changes in prices of Bitcoin, Dow Jones and gold:
3443+
#### Displays a multi-axis line chart of total COVID-19 cases and changes in prices of Bitcoin, Dow Jones and gold:
34443444

34453445
![Covid Cases](web/covid_cases.png)
34463446
<div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:285px; width:935px;"></div>

index.html

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@
6060
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
6161
</header>
6262

63-
<div><h1 id="comprehensivepythoncheatsheet">Comprehensive Python Cheatsheet</h1><p class="banner"><sup><a href="https://raw.githubusercontent.com/gto76/python-cheatsheet/main/README.md">Download text file</a>, <a href="https://github.com/gto76/python-cheatsheet">Fork me on GitHub</a>, <a href="https://github.com/gto76/python-cheatsheet/wiki/Frequently-Asked-Questions">Check out FAQ</a> or <a href="index.html?theme=dark3">Switch to dark theme</a>.
63+
<div class="pagebreak"></div>
64+
<div><h1 id="comprehensivepythoncheatsheet">Comprehensive Python Cheatsheet</h1><p class="banner"><sup><a href="https://raw.githubusercontent.com/gto76/python-cheatsheet/main/README.md">Download text file</a>, <a href="https://github.com/gto76/python-cheatsheet">Fork me on GitHub</a>, <a href="https://github.com/gto76/python-cheatsheet/wiki/Frequently-Asked-Questions">Check out FAQ</a> or <a href="index.html?theme=dark3">Switch to dark theme</a>.
6465
</sup></p><p class="banner" style="margin-bottom: 20px; padding-bottom: 7px;"><img src="web/image_888.jpeg" alt="Monty Python"></p><script>
6566
// Changes the banner image and link-to-theme if "theme=dark" is in query string
6667
// or if browser prefers dark mode and theme is not explicitly set.
@@ -340,7 +341,7 @@
340341

341342
<div><h2 id="regex"><a href="#regex" name="regex">#</a>Regex</h2><p><strong>Functions for regular expression matching.</strong></p><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> re
342343
&lt;str&gt; = re.sub(<span class="hljs-string">r'&lt;regex&gt;'</span>, new, text, count=<span class="hljs-number">0</span>) <span class="hljs-comment"># Substitutes all occurrences with 'new'.</span>
343-
&lt;list&gt; = re.findall(<span class="hljs-string">r'&lt;regex&gt;'</span>, text) <span class="hljs-comment"># Returns all occurrences as strings.</span>
344+
&lt;list&gt; = re.findall(<span class="hljs-string">r'&lt;regex&gt;'</span>, text) <span class="hljs-comment"># Returns all occurrences of the pattern.</span>
344345
&lt;list&gt; = re.split(<span class="hljs-string">r'&lt;regex&gt;'</span>, text, maxsplit=<span class="hljs-number">0</span>) <span class="hljs-comment"># Add brackets around regex to keep matches.</span>
345346
&lt;Match&gt; = re.search(<span class="hljs-string">r'&lt;regex&gt;'</span>, text) <span class="hljs-comment"># First occurrence of the pattern or None.</span>
346347
&lt;Match&gt; = re.match(<span class="hljs-string">r'&lt;regex&gt;'</span>, text) <span class="hljs-comment"># Searches only at the beginning of the text.</span>
@@ -373,7 +374,7 @@
373374
<li><strong>Use a capital letter for negation (all non-ASCII characters will be matched when used in combination with ASCII flag).</strong></li>
374375
</ul>
375376
<div><h2 id="format"><a href="#format" name="format">#</a>Format</h2><pre><code class="python hljs">&lt;str&gt; = <span class="hljs-string">f'<span class="hljs-subst">{&lt;el_1&gt;}</span>, <span class="hljs-subst">{&lt;el_2&gt;}</span>'</span> <span class="hljs-comment"># Curly brackets can also contain expressions.</span>
376-
&lt;str&gt; = <span class="hljs-string">'{}, {}'</span>.format(&lt;el_1&gt;, &lt;el_2&gt;) <span class="hljs-comment"># Or: '{0}, {a}'.format(&lt;el_1&gt;, a=&lt;el_2&gt;)</span>
377+
&lt;str&gt; = <span class="hljs-string">'{}, {}'</span>.format(&lt;el_1&gt;, &lt;el_2&gt;) <span class="hljs-comment"># Same as '{0}, {a}'.format(&lt;el_1&gt;, a=&lt;el_2&gt;).</span>
377378
&lt;str&gt; = <span class="hljs-string">'%s, %s'</span> % (&lt;el_1&gt;, &lt;el_2&gt;) <span class="hljs-comment"># Redundant and inferior C-style formatting.</span>
378379
</code></pre></div>
379380

@@ -593,7 +594,6 @@
593594
&lt;TD&gt; = &lt;DTa&gt; - &lt;DTa&gt; <span class="hljs-comment"># Ignores jumps if they share tzinfo object.</span>
594595
&lt;D/DT&gt; = &lt;D/DT&gt; ± &lt;TD&gt; <span class="hljs-comment"># Returned datetime can fall into missing hour.</span>
595596
&lt;TD&gt; = &lt;TD&gt; * &lt;float&gt; <span class="hljs-comment"># Also `&lt;TD&gt; = abs(&lt;TD&gt;)`, `&lt;TD&gt; = &lt;TD&gt; ± &lt;TD&gt;`.</span>
596-
&lt;float&gt; = &lt;TD&gt; / &lt;TD&gt; <span class="hljs-comment"># Also `(&lt;int&gt;, &lt;TD&gt;) = divmod(&lt;TD&gt;, &lt;TD&gt;)`.</span>
597597
</code></pre></div>
598598

599599
<div><h2 id="function"><a href="#function" name="function">#</a>Function</h2><p><strong>Independent block of code that returns a value when called.</strong></p><pre><code class="python language-python hljs"><span class="hljs-function"><span class="hljs-keyword">def</span> &lt;<span class="hljs-title">func_name</span>&gt;<span class="hljs-params">(&lt;nondefault_args&gt;)</span>:</span> ... <span class="hljs-comment"># E.g. `def func(x, y): ...`.</span>
@@ -1568,7 +1568,6 @@
15681568
<div><h3 id="writerowstocsvfile">Write Rows to CSV File</h3><pre><code class="python language-python hljs"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">write_to_csv_file</span><span class="hljs-params">(filename, rows, mode=<span class="hljs-string">'w'</span>, **csv_params)</span>:</span>
15691569
<span class="hljs-keyword">with</span> open(filename, mode, encoding=<span class="hljs-string">'utf-8'</span>, newline=<span class="hljs-string">''</span>) <span class="hljs-keyword">as</span> file:
15701570
writer = csv.writer(file, **csv_params)
1571-
writer.writerows(rows)
15721571
</code></pre></div>
15731572

15741573
<div><h2 id="sqlite"><a href="#sqlite" name="sqlite">#</a>SQLite</h2><p><strong>A server-less database engine that stores each database into its own file.</strong></p><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> sqlite3
@@ -1888,7 +1887,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
18881887
&lt;el&gt; = &lt;Queue&gt;.get_nowait() <span class="hljs-comment"># Raises queue.Empty exception if empty.</span>
18891888
</code></pre></div>
18901889

1891-
<div><h3 id="threadpoolexecutor">Thread Pool Executor</h3><pre><code class="python language-python hljs">&lt;Exec&gt; = ThreadPoolExecutor(max_workers=<span class="hljs-keyword">None</span>) <span class="hljs-comment"># Or: `with ThreadPoolExecutor() as &lt;name&gt;: ...`</span>
1890+
<div><h3 id="threadpoolexecutor">Thread Pool Executor</h3><pre><code class="python language-python hljs">&lt;Exec&gt; = ThreadPoolExecutor(max_workers=<span class="hljs-keyword">None</span>) <span class="hljs-comment"># Also `with ThreadPoolExecutor() as &lt;name&gt;: …`.</span>
18921891
&lt;iter&gt; = &lt;Exec&gt;.map(&lt;func&gt;, &lt;args_1&gt;, ...) <span class="hljs-comment"># Multithreaded and non-lazy map(). Keeps order.</span>
18931892
&lt;Futr&gt; = &lt;Exec&gt;.submit(&lt;func&gt;, &lt;arg_1&gt;, ...) <span class="hljs-comment"># Creates a thread and returns its Future obj.</span>
18941893
&lt;Exec&gt;.shutdown() <span class="hljs-comment"># Waits for all submitted threads to finish.</span>
@@ -1974,7 +1973,6 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
19741973
curses.wrapper(main)
19751974
</code></pre></div>
19761975

1977-
<p><br></p>
19781976
<div><h1 id="libraries">Libraries</h1><div><h2 id="progressbar"><a href="#progressbar" name="progressbar">#</a>Progress Bar</h2><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install tqdm</span>
19791977
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> tqdm, time
19801978
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> el <span class="hljs-keyword">in</span> tqdm.tqdm([<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>], desc=<span class="hljs-string">'Processing'</span>):
@@ -2191,7 +2189,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
21912189
</code></pre>
21922190
<pre><code class="python language-python hljs">&lt;view&gt; = &lt;array&gt;.reshape(&lt;shape&gt;) <span class="hljs-comment"># Also `&lt;array&gt;.shape = &lt;shape&gt;`.</span>
21932191
&lt;array&gt; = &lt;array&gt;.flatten() <span class="hljs-comment"># Also `&lt;view&gt; = &lt;array&gt;.ravel()`.</span>
2194-
&lt;view&gt; = &lt;array&gt;.transpose() <span class="hljs-comment"># Or: &lt;array&gt;.T</span>
2192+
&lt;view&gt; = &lt;array&gt;.transpose() <span class="hljs-comment"># Flips the table over its diagonal.</span>
21952193
</code></pre>
21962194
<pre><code class="python language-python hljs">&lt;array&gt; = np.copy/abs/sqrt/log/int64(&lt;array&gt;) <span class="hljs-comment"># Returns new array of the same shape.</span>
21972195
&lt;array&gt; = &lt;array&gt;.sum/max/mean/argmax/all(axis) <span class="hljs-comment"># Aggregates specified dimension.</span>
@@ -2323,7 +2321,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
23232321
<li><strong>Use <code class="python hljs"><span class="hljs-string">'fill=&lt;color&gt;'</span></code> to set the primary color.</strong></li>
23242322
<li><strong>Use <code class="python hljs"><span class="hljs-string">'width=&lt;int&gt;'</span></code> to set the width of lines or contours.</strong></li>
23252323
<li><strong>Use <code class="python hljs"><span class="hljs-string">'outline=&lt;color&gt;'</span></code> to set the color of the contours.</strong></li>
2326-
<li><strong>Color can be an int, tuple, <code class="python hljs"><span class="hljs-string">'#rrggbb[aa]'</span></code> or a color name.</strong></li>
2324+
<li><strong>Color can be an int, tuple, <code class="python hljs"><span class="hljs-string">'#rrggbb[aa]'</span></code> string or a color name.</strong></li>
23272325
</ul>
23282326
<div><h2 id="animation"><a href="#animation" name="animation">#</a>Animation</h2><div><h4 id="createsagifofabouncingball">Creates a GIF of a bouncing ball:</h4><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install imageio</span>
23292327
<span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image, ImageDraw
@@ -2797,7 +2795,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
27972795
&lt;Fig&gt; = px.scatter_3d(&lt;DF&gt;, x=col_key, y=col_key, …) <span class="hljs-comment"># `z=col_key`. Also color, size, symbol.</span>
27982796
&lt;Fig&gt; = px.histogram(&lt;DF&gt;, x=col_keys, y=col_key) <span class="hljs-comment"># Also color, nbins. All are optional.</span>
27992797
</code></pre>
2800-
<div><h4 id="displaysalinechartoftotalcoronavirusdeathspermilliongroupedbycontinent">Displays a line chart of total coronavirus deaths per million grouped by continent:</h4><p></p><div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:312px; width:914px;"></div><pre><code class="python language-python hljs">covid = pd.read_csv(<span class="hljs-string">'https://raw.githubusercontent.com/owid/covid-19-data/8dde8ca49b'</span>
2798+
<div><h4 id="displaysalinechartoftotalcovid19deathspermilliongroupedbycontinent">Displays a line chart of total COVID-19 deaths per million grouped by continent:</h4><p></p><div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:312px; width:914px;"></div><pre><code class="python language-python hljs">covid = pd.read_csv(<span class="hljs-string">'https://raw.githubusercontent.com/owid/covid-19-data/8dde8ca49b'</span>
28012799
<span class="hljs-string">'6e648c17dd420b2726ca0779402651/public/data/owid-covid-data.csv'</span>,
28022800
usecols=[<span class="hljs-string">'iso_code'</span>, <span class="hljs-string">'date'</span>, <span class="hljs-string">'population'</span>, <span class="hljs-string">'total_deaths'</span>])
28032801
continents = pd.read_csv(<span class="hljs-string">'https://gto76.github.io/python-cheatsheet/web/continents.csv'</span>,
@@ -2812,7 +2810,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
28122810

28132811

28142812

2815-
<div><h4 id="displaysamultiaxislinechartoftotalcoronaviruscasesandchangesinpricesofbitcoindowjonesandgold">Displays a multi-axis line chart of total coronavirus cases and changes in prices of Bitcoin, Dow Jones and gold:</h4><p></p><div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:285px; width:935px;"></div><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install pandas lxml selenium plotly</span>
2813+
<div><h4 id="displaysamultiaxislinechartoftotalcovid19casesandchangesinpricesofbitcoindowjonesandgold">Displays a multi-axis line chart of total COVID-19 cases and changes in prices of Bitcoin, Dow Jones and gold:</h4><p></p><div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:285px; width:935px;"></div><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install pandas lxml selenium plotly</span>
28162814
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd, selenium.webdriver, io, plotly.graph_objects <span class="hljs-keyword">as</span> go
28172815

28182816
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>

0 commit comments

Comments
 (0)