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
参数之后的任何形式参数都是“仅限关键字参数”。