将 Zip 扩展到 Pad 至最大长度
Zip 是 Python 中的一个内置函数,它组合了多个可迭代对象。但是,它会停在最短可迭代的长度处。如果我们想要填充结果以匹配最长可迭代的长度怎么办?
解决方案
在 Python 3 中,itertools.zip_longest 提供了此功能。默认情况下,它使用 None 评估所有迭代和填充,保持对齐。
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(itertools.zip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
您可以使用 fillvalue 参数自定义填充值:
list(itertools.zip_longest(a, b, c, fillvalue='foo')) # [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
对于 Python 2,您可以使用 itertools.izip_longest (Python 2.6 ) 或使用 None 进行映射:
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
以上是如何将 Python 的 Zip 函数填充到最长可迭代的长度?的详细内容。更多信息请关注PHP中文网其他相关文章!