from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    """Collect data into fixed-length chunks or blocks"""
args = [iter(iterable)] * n
return zip_longest(fillvalue=fillvalue, *args)
list(zip(a, b, grouper(c, 2), d))
Python, zip multiple lists where one list requires two items each