欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 Python 中,zip 函数默认会以最短的可迭代对象作为其输出的长度,如果你希望以最长的可迭代对象作为基础,并且在较短的可迭代对象中用空值(如 None)填充不足的部分,可以使用 itertools.zip_longest 函数。
itertools.zip_longest 可以接受多个可迭代对象,并返回一个迭代器。对于较短的可迭代对象,如果没有更多的元素,则会使用指定的填充值(默认为 None)填充。以下是一个示例:
pythonfrom itertools import zip_longest # 假设我们有几个不同长度的列表 list1 = [1, 2, 3] list2 = ['a', 'b'] list3 = [True, False, True, False] # 使用 zip_longest 进行打包,并用 None 填充 zipped = zip_longest(list1, list2, list3) # 将结果转换为列表并打印 zipped_list = list(zipped) print(zipped_list)
[(1, 'a', True),
(2, 'b', False),
(3, None, True),
(None, None, False)]
如果你希望用特定的填充值,可以通过 fillvalue 参数进行设置:
pythonfrom itertools import zip_longest list1 = [1, 2, 3] list2 = ['a', 'b'] list3 = [True, False, True, False] # 使用 zip_longest,并指定 fillvalue zipped = zip_longest(list1, list2, list3, fillvalue='EMPTY') zipped_list = list(zipped) print(zipped_list)
[(1, 'a', True),
(2, 'b', False),
(3, 'EMPTY', True),
('EMPTY', 'EMPTY', False)]
zip_longest 来自 itertools 模块,因此使用前需要导入。
这个方法可以很方便地创建一个符合你需求的合并列表,尤其在处理不同长度的数据集合时非常有用。