1.2 KiB
1.2 KiB
title, tags
| title | tags |
|---|---|
| merge | list,math,advanced |
Merges two or more lists into a list of lists, combining elements from each of the input lists based on their positions.
- Use
maxcombined with list comprehension to get the length of the longest list in the arguments. - Use
range()in combination with themax_lengthvariable to loop as many times as there are elements in the longest list. - If a list is shorter than
max_length, usefill_valuefor the remaining items (defaults toNone). zip()anditertools.zip_longest()provide similar functionality to this snippet.
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]]