Aug 20th, 2021 - written by Kimserey with .
Python comes with a handful of built in functions provided by the standard library. In today’s post, we will look some of them which are very useful in day to day programming.
The following list contains the functions I have used the most for the past year:
Let’s look at each one of them in order with examples.
absabs is the absolute function, turning numbers to absolute values.
1
2
3
4
5
>>> a = -1
>>> a = abs(a)
>>> a
>>> 1
allall takes an iterable and returns a boolean which is True if all elements are True, else False.
1
2
3
4
>>> a = [1, 2, None, 3, 4]
>>> all([v != None for v in a])
>>> False
anyany takes an iterable and returns a boolean which is True if any element is True, else False.
1
2
3
4
>>> a = [1, 2, None, 3, 4]
>>> any([v != None for v in a])
>>> True
divmoddivmod returns the division and the modulo in one operation.
1
2
3
4
>>> help(divmod)
divmod(x, y, /)
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
x//y would be the integral part of the division and x%y would be the modulo.
1
2
>>> divmod(5, 3)
>>> (1, 2)
enumerateenumerate takes an iterable and returns an iterable which returns the index plus value on each iteration.
1
2
3
4
5
6
7
8
9
10
11
>>> a = ["a", "b", "c"]
>>> a
>>> ['a', 'b', 'c']
>>> for idx, ch in enumerate(a):
print(idx, ch)
0 a
1 b
2 c
lenlen will return the length of an iterable. Useful for lists but also dictionaries as it would return the size of the dictionary.
1
2
3
4
5
>>> len([1, 2, 3])
>>> 3
>>> len({'a': 1, 'b': 2})
>>> 2
maxmax will return the maximum value in an iterable. A common example is keeping track of the maximum value:
1
max_val = max(max_val, next_val)
minmin will return the minimum value in an iterable.
1
min_val = min(min_val, next_val)
rangerange returns a sequence from the start to stop specified or if not specified from 0 till stop.
1
2
3
4
5
6
7
8
>>> list(range(0, 10))
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10))
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(9, -1, -1))
>>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
As we can see we can also use range to return a sequence of element descreasing toward 0.
sumsum will return the sum of all values in an iterable.
1
2
>>> sum([1, 2, 3])
>>> 6
zipzip will combine two list stopping when the first list is exhausted.
1
2
3
4
5
6
7
8
9
10
>>> a = [1, 2, 3, 4, 5, 6]
>>> b = ["a", "b", "c"]
>>> for x, y in zip(a, b):
print(x, y)
1 a
2 b
3 c
zip combined with range is very useful to traverse diagonals starting from each corner.
For example if we imagine a matrice 4x4:
(0, 0) |
(0, 1) |
(0, 2) |
(0, 3) |
(1, 0) |
(1, 1) |
(1, 2) |
(1, 3) |
(2, 0) |
(2, 1) |
(2, 2) |
(2, 3) |
(3, 0) |
(3, 1) |
(3, 2) |
(3, 3) |
Get the diagonal from top left to bottom right:
1
2
3
4
5
6
>>> for x, y in zip(range(0, 4), range(0, 4)):
print(x, y)
0 0
1 1
2 2
3 3
Get the diagonal from top right to bottom left:
1
2
3
4
5
6
>>> for x, y in zip(range(0, 4), range(3, -1, -1)):
print(x, y)
0 3
1 2
2 1
3 0
Get the diagonal from bottom left to top right:
1
2
3
4
5
6
>>> for x, y in zip(range(3, -1, -1), range(0, 4)):
print(x, y)
3 0
2 1
1 2
0 3
Or lastly get the diagonal from bottom right to top left:
1
2
3
4
5
6
>>> for x, y in zip(range(3, -1, -1), range(3, -1 , -1)):
print(x, y)
3 3
2 2
1 1
0 0
And that concludes today’s post!
Today we looked at a bunch of built in functions provided by Python standard library. By making sure we are aware of those, we can reduce the complexity of our algorithm by leveraging them. I hope you liked this post and I see you on the next one!