Recently I just jumped into Python, because of my curious nature, I often look for good tricks of that language =)) So today I will list the good things I found under the eyes of a young man. Ruby jumped: 3
else paired with for ????
Have you ever seen the else else go with the for loop? =)) But Py has a special type of syntax that only executes if the for loop exits naturally without any interrupt statements. .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <span class="token keyword">def</span> <span class="token function">func</span> <span class="token punctuation">(</span> array <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">for</span> num <span class="token keyword">in</span> array <span class="token punctuation">:</span> <span class="token keyword">if</span> num <span class="token operator">%</span> <span class="token number">2</span> <span class="token operator">==</span> <span class="token number">0</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> num <span class="token punctuation">)</span> <span class="token keyword">break</span> <span class="token comment"># Case1: Break được gọi nên đoạn mã trong else sẽ ko đc thực thi. </span> <span class="token keyword">else</span> <span class="token punctuation">:</span> <span class="token comment"># Case 2: Else đc thực thi vì ko có thằng break nào </span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"No call for Break. Else is executed"</span> <span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"1st Case:"</span> <span class="token punctuation">)</span> a <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">2</span> <span class="token punctuation">]</span> func <span class="token punctuation">(</span> a <span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"2nd Case:"</span> <span class="token punctuation">)</span> a <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> func <span class="token punctuation">(</span> a <span class="token punctuation">)</span> |
Result of above function:
1st Case: 2
2nd Case: No call for Break. Else is executed
Decompress variable: 3
Argument Unpacking (variable decompression) function is another great feature of Python. We can extract a List or Dictionary to use as a variable using * and **. This is often called the Splat operator. Example here:
1 2 3 4 5 6 7 8 9 | <span class="token keyword">def</span> <span class="token function">point</span> <span class="token punctuation">(</span> x <span class="token punctuation">,</span> y <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> x <span class="token punctuation">,</span> y <span class="token punctuation">)</span> foo_list <span class="token operator">=</span> <span class="token punctuation">(</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">)</span> bar_dict <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token string">'y'</span> <span class="token punctuation">:</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token string">'x'</span> <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">}</span> point <span class="token punctuation">(</span> <span class="token operator">*</span> foo_list <span class="token punctuation">)</span> <span class="token comment"># Giải nén Lists </span> point <span class="token punctuation">(</span> <span class="token operator">**</span> bar_dict <span class="token punctuation">)</span> <span class="token comment"># Giải nén Dictionaries </span> |
Output:
3 4
2 3
Find the index in the loop
This is fairly simple, but unlike Ruby, each_with_index has a name that specifies its function =)) Py has the corresponding ‘enumerate’ function but the name is not very relevant =,., = In general It also returns an element of the loop associated with its index:
1 2 3 4 | vowels <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'e'</span> <span class="token punctuation">,</span> <span class="token string">'i'</span> <span class="token punctuation">,</span> <span class="token string">'o'</span> <span class="token punctuation">,</span> <span class="token string">'u'</span> <span class="token punctuation">]</span> <span class="token keyword">for</span> i <span class="token punctuation">,</span> letter <span class="token keyword">in</span> <span class="token builtin">enumerate</span> <span class="token punctuation">(</span> vowels <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> i <span class="token punctuation">,</span> letter <span class="token punctuation">)</span> |
Output:
(0, ‘a’)
(1, ‘e’)
(2, ‘i’)
(3, ‘o’)
(4 U’)
To infinity and beyond !!! and back ??
Can we define infinity? But wait! Not with Python. Take a look at this great example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <span class="token comment"># Dương vô cực</span> p_infinity <span class="token operator">=</span> <span class="token builtin">float</span> <span class="token punctuation">(</span> <span class="token string">'Inf'</span> <span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token number">99999999999999</span> <span class="token operator">></span> p_infinity <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"The number is greater than Infinity!"</span> <span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"Infinity is greatest"</span> <span class="token punctuation">)</span> <span class="token comment"># Âm vô cực</span> n_infinity <span class="token operator">=</span> <span class="token builtin">float</span> <span class="token punctuation">(</span> <span class="token string">'-Inf'</span> <span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token operator">-</span> <span class="token number">99999999999999</span> <span class="token operator"><</span> n_infinity <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"The number is lesser than Negative Infinity!"</span> <span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token string">"Negative Infinity is least"</span> <span class="token punctuation">)</span> |
Output:
Infinity is greatest
Negative Infinity is least
Slice Operator
Python’s has something special called the Slice Operator. It is actually just a collection of fancy ways to retrieve items from the list, as well as change them. Take a look at this code:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token comment"># Slice Operator </span> a <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">]</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> a <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token comment"># Lấy phần tử từ 0 đến 2 nhưng ko lấy 2 (yaoming)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> a <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token comment"># Lấy hết trừ thanh niên cuối hàng</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> a <span class="token punctuation">[</span> <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token comment"># Đảo ngược list</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> a <span class="token punctuation">[</span> <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token comment"># Bỏ qua 2 phần tử đầu</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> a <span class="token punctuation">[</span> <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token number">2</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token comment"># Bỏ 2 phần tử cuối </span> |
Output:
[twelfth]
[1, 2, 3, 4]
[5, 4, 3, 2, 1]
[1, 3, 5]
[5, 3, 1]
If there’s a decompression, there must be compression, right? (The two are not related to each other =)))))
Want to compress two Lists into a 2-dimensional matrix. Just use zip to do it.
1 2 3 | matrix <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token builtin">zip</span> <span class="token punctuation">(</span> <span class="token operator">*</span> matrix <span class="token punctuation">)</span> <span class="token punctuation">)</span> |
Results (try using a decompression to see if it looks good):
[(1, 4), (2, 5), (3, 6)]
Function declaration in place (wow)
You want to declare a small function, but you don’t want to scroll down and declare it below. Don’t worry, you can use lambda. The keyword lambda in python is used to declare the function anonymously, you can declare the function anytime and anywhere without worrying about which father =)) (kidding, declaring some small functions: v)
1 2 3 | subtract <span class="token operator">=</span> <span class="token keyword">lambda</span> x <span class="token punctuation">,</span> y <span class="token punctuation">:</span> x <span class="token operator">-</span> y subtract <span class="token punctuation">(</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">)</span> |
Loop String N times
Normally in other languages to do this we will use the loop, but python has a simple trick involving a string and some inside the print function. (I thought Ruby had it anyway)
1 2 3 | <span class="token builtin">str</span> <span class="token operator">=</span> <span class="token string">"Point"</span> <span class="token punctuation">;</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token builtin">str</span> <span class="token operator">*</span> <span class="token number">3</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Output:
PointPointPoint
I just started learning so I only learn the beauty of the language, next time I will come back and benefit from the good points of the Django framework. Many thanks to everyone who read my article (bow).