Files
30-seconds-of-code/snippets/zip.md
Rohit Tanwar 55f39b14bd new snippets
2018-02-01 13:49:59 +05:30

921 B
Raw Blame History

zip

Already implemented via itertools.zip_longest()

Creates a list of elements, grouped based on the position in the original lists.

Use max combined with list comprehension to get the length of the longest list in the arguments. Loops for max_length times grouping elements. If lengths of lists vary fill_value is used. By default fill_value is None.

def zip(*args, fillvalue=None):
    max_length = max([len(arr) for arr in args])
    result = []
    for i in range(max_length):
        result.append([
            args[k][i] if i < len(args[k]) else None for k in range(len(args))
        ])
    return result
zip(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]]
zip(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]]
zip(['a'], [1, 2], [True, False], fill_value = '_') # [['a', 1, True], ['_', 2, False]]