Flattening a list of lists
When you have multiple nested lists, you often need to just iterate over all the items contained in the lists without much interest in the depth at which they are actually stored.
Say you have this list:
values = [['a', 'b', 'c'], [1, 2, 3], ['X', 'Y', 'Z']]
If you just want to grab all the items within it, you really don't want to iterate over the lists within the list and then on the items of each one of them. We just want the leaf items and we don't care at all that they are in a list within a list.
How to do it...
What we want to do is just join all the lists into a single iterable that will yield the items themselves, as we are talking about iterators, the itertools
module has the right function that will allow us to chain all the lists as if they were a single one:
>>> import itertools
>>> chained = itertools.chain.from_iterable(values)
The resulting chained
iterator will yield the underlying items, one by one, when consumed...