关于python:Python代码阅读第17篇列表元素按位合并

7次阅读

共计 981 个字符,预计需要花费 3 分钟才能阅读完成。

Python 代码浏览合集介绍:为什么不举荐 Python 初学者间接看我的项目源码

本篇浏览的代码实现了多个列表依照元素的地位依序合并成一个新的嵌套列表。每个子列表都是原列表对应地位的元素。zip()itertools.zip_longest() 提供了相似于这段代码的性能。

本篇浏览的代码片段来自于 30-seconds-of-python。

merge

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

# EXAMPLES
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]]

merge函数接管多个列表和一个填充值 fill_value,返回一个嵌套列表。该嵌套列表的元素个数等于最长的输出列表的长度,每个子列表的元素顺次来自于输出列表的雷同地位,输出列表的元素有余的状况下,应用填充值代替。也就是说merge_list[0] 是一个列表,其中的元素顺次为输出列表索引为 0 的元素。

函数应用 max 联合 list comprehension 失去参数中最长的列表的长度。联合应用 range()max_length变量来循环。如果一个列表的长度短于max_length,则残余的我的项目应用fill_value(默认为 None)来进行填充。

函数调用同时应用了“关键字参数”和“可变参数”的形式。在第 9 篇的时候介绍了独自应用“可变参数”调用的形式。一般来说,这些“可变参数”将在形式参数列表的开端,因为它们收集传递给函数的所有残余输出参数。呈现在 *args 参数之后的任何形式参数都是“仅限关键字参数”。

正文完
 0