Cool Python tricks you are not using, but you should.
Cool Python tips and tricks
Ternary operator
ans = z if a > b else c
is same as
if a > b:
ans = z
else:
ans = c
Short circuit
result = counter or 15
is same as
result = counter if counter else 15
is same as
if not counter:
result = 15
else:
result = counter
Comparison
if 3 > a > 1 < b < 5: foo()
instead of
if a > 1 and b > 1 and a < 3 and b < 5: foo()
Reverse an iterable
[1, 2, 3, 4][::-1] # => [4, 3, 2, 1]
Unpacking
z = [1, 2, 3, 4, 5, 6]
a, *b, c = z
is same as
b = []
for i, val in enumerate(z):
if i == 0:
a = val
elif i == len(z) - 1:
c = val
else:
b.append(val)
swapping two variables
a, b = b, a
# this is tuple unpacking
Last element of an iterable
To fetch the last element of any iterable like list, tuple or set.
For list/tuple
>>> zlst = ['a', 'b', 'c']
>>> zlst[-1]
'c'
>>> *_, e = zlst
# if you do not want to use the non-last elements
>>> e
'c'
>>> ztup = ('a', 'b', 'c')
>>> ztup[-1]
'c'
For set
>>> my_set = {'a', 'b', 'c'}
>>> my_set[-1]
TypeError: 'set' object is not subscriptable
>>> q, w, e = my_set
>>> e
'c'
>>> *q, e = my_set
>>> e
'c'
>>> q
['a', 'b']
# q is not a set
More tricks will be added soon. The cover picture is copyrighted to the author.
Code formatting
- Use black to format your codebase.
- Have a large project, can do one at a time or one file at a time.
- Here is my favorite config I use to auto-format my code modules.
$ pip install black
$ black folder/file.py -l 120 -t py38
reformatted folder/file.py
All done! ✨ 🍰 ✨
1 file reformatted.
-l
: I use 120 as the maximum characters I accept in a line-t py38
: Python 3.8 specific custom formatting.