合并列表

将两个或多个列表合并成一个列表,根据它们的位置组合每个输入列表的元素。

  • 使用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]]