
Functional Python Programming
By :

Sometimes, we'll have two collections of data that need to parallel each other. In Chapter 4, Working with Collections, we saw how the zip()
function can interleave two sequences to create a sequence of pairs. In many cases, we're really trying to do something like this:
map(function, zip(one_iterable, another_iterable))
We're creating argument tuples from two (or more) parallel iterables and applying a function to the argument tuple
. We can also look at it like this:
(function(x,y) for x,y in zip(one_iterable, another_iterable))
Here, we've replaced the map()
function with an equivalent generator expression.
We might have the idea of generalizing the whole thing to this:
def star_map(function, *iterables) return (function(*args) for args in zip(*iterables))
There is a better approach that is already available to us. We don't actually need these techniques. Let's look at a concrete example of the alternate approach.
In Chapter 4, Working with Collections...
Change the font size
Change margin width
Change background colour