Python代码阅读(第17篇)(列表元素按位合并)
Python 代码阅读合集介绍: 为什么不推荐Python初学者直接看项目源码本篇阅读的代码实现了多个列表按照元素的位置依序合并成一个新的嵌套列表。每个子列表都是原列表对应位置的元素。
zip()
和itertools.zip_longest()
提供了类似于这段代码的功能。本篇阅读的代码片段来自于30-seconds-of-python。
merge
def merge(*args, fill_value=https://www.it610.com/article/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 = 'https://www.it610.com/article/_') # [['a', 1, True], ['_', 2, False]]
【Python代码阅读(第17篇)(列表元素按位合并)】
merge
函数接收多个列表和一个填充值fill_value
,返回一个嵌套列表。该嵌套列表的元素个数等于最长的输入列表的长度,每个子列表的元素依次来自于输入列表的相同位置,输入列表的元素不足的情况下,使用填充值代替。也就是说merge_list[0]
是一个列表,其中的元素依次为输入列表索引为0
的元素。函数使用
max
结合list comprehension得到参数中最长的列表的长度。结合使用range()
和max_length
变量来循环。如果一个列表的长度短于max_length
,则剩余的项目使用fill_value
(默认为None)来进行填充。函数调用同时使用了“关键字参数”和“可变参数”的方式。在第9篇的时候介绍了单独使用“可变参数”调用的方式。一般来说,这些“可变参数”将在形式参数列表的末尾,因为它们收集传递给函数的所有剩余输入参数。出现在
*args
参数之后的任何形式参数都是“仅限关键字参数”。推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 上班后阅读开始变成一件奢侈的事
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- 历史教学书籍
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 绘本讲师训练营【24期】14/21阅读原创《小黑鱼》