Merges two or more lists into a list of lists, combining elements from each of the input lists based on their positions.
max combined with list comprehension to get the length of the longest list in the arguments.
range() in combination with the
max_length variable to loop as many times as there are elements in the longest list.
If a list is shorter than
fill_value for the remaining items (defaults to
def merge(*args, fill_value=None): max_length = max([len(lst) for lst in args]) result =  for i in range(max_length): result.append([ args[k][i] if i < len(args[k]) else fill_value for k in range(len(args)) ]) return result
merge(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]] merge(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]] merge(['a'], [1, 2], [True, False], fill_value = '_') # [['a', 1, True], ['_', 2, False]]