Starmapping with operators
The
itertools.starmap()
function can be applied to an operator and a sequence of pairs of values. Here's an example:
>>> d= starmap(pow, zip_longest([], range(4), fillvalue=60))
The
itertools.zip_longest()
function will create a sequence of pairs such as the following:
[(60, 0), (60, 1), (60, 2), (60, 3)]
It does this because we provided two sequences: the []
brackets and the range(4)
parameter. The fillvalue
parameter will be used when the shorter sequence runs out of data.
When we use the starmap()
function, each pair becomes the argument to the given function. In this case, we provided the operator.pow()
function, which is the **
operator. We've calculated values for [60**0, 60**1, 60**2, 60**3]
. The value of the d
variable is [1, 60, 3600, 216000]
.
The
starmap()
function is useful when we have a sequence of tuples. We have a tidy equivalence between the map(f, x, y)
and starmap(f, zip(x,y))
functions.
Here's a continuation of the preceding...