Python - itertools Module - zip
zip is very useful function that itertools
module has to offer along with some important ones like map
and chain
. Zip combines items of several iterators to produce a tuple
.
# itertools_zip.py
for i in zip([1, 2, 3], ['a', 'b', 'c']):
print(i)
This is very useful when we just want to map items without having a key of sorts.
$ python3 itertools_zip.py
(1, 'a')
(2, 'b')
(3, 'c')
itertools
also offers zip_longest
which runs till the longest iterator is exhaused.
# itertools_zip_longest.py
from itertools import *
r1 = range(3)
r2 = range(2)
print('zip stops early:')
print(list(zip(r1, r2)))
r1 = range(3)
r2 = range(2)
print('\nzip_longest processes all of the values:')
print(list(zip_longest(r1, r2)))
By default, value for missing item is None
but can be changed using the optional argument - fillvalue
$ python3 itertools_zip_longest.py
zip stops early:
[(0, 0), (1, 1)]
zip_longest processes all of the values:
[(0, 0), (1, 1), (2, None)]
This is part of series of articles from Python Module of the Week