这是本公众号推出一个#代码片段#的系列合集,分享平常学习或阅读过程中发现的实用代码片段(Code Snippets),会涉及 Python、JavaScript、TypeScritp、Swift等多种语言。
欢迎大家关注公众号获取最新推送,也可以进入合集页面点击订阅,直接获取合集更新推送。
合集传送门:代码片段精选
本文关键词:
合并列表
将两个或多个列表合并为一个列表的列表,根据每个输入列表的位置合并元素。
将 max() 与列表推导式( list comprehension )结合使用,可获取参数中最长列表的长度。
将 range() 与 max_length 变量结合使用,循环次数与最长列表中的元素数量相同。
如果列表短于 max_length,则对剩余项使用 fill_value(默认为无)。
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]]
Source: https://www.30secondsofcode.org/python/s/merge/
- EOF -
回复下方「关键词」,获取优质资源
回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版
👇关注我的公众号👇
告诉你更多细节干货
欢迎围观我的朋友圈
👆每天更新所想所悟