合并列表
将两个或多个列表合并成一个列表,根据它们的位置组合每个输入列表的元素。
- 使用
max()
结合列表推导来获取参数中最长列表的长度。 - 使用
range()
结合max_length
变量循环次数,次数等于最长列表中的元素个数。 - 如果列表长度小于
max_length
,则使用fill_value
填充剩余的项(默认为None
)。 zip()
和itertools.zip_longest()
提供了与此代码片段类似的功能。
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]]