将压缩列表填充到最长长度
在 Python 编程领域中,zip() 函数将多个可迭代对象无缝合并为一个列表元组。然而,结果列表的长度通常受到最短输入的限制。为了克服这一限制并将列表填充到最长输入的长度,人们可能会寻求替代解决方案。
itertools.zip_longest:完美契合
Python 3 揭幕itertools.zip_longest 的强大功能,是专门为此目的而设计的函数。它用 None 值无缝填充较短的输入,有效地将列表扩展到最长可迭代的长度。
这是一个说明性示例:
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] result = list(itertools.zip_longest(a, b, c)) print(result)
输出:
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
自定义填充值
zip_longest 函数提供了使用 fillvalue 参数指定自定义填充值的灵活性。这样可以更好地控制填充机制。
result = list(itertools.zip_longest(a, b, c, fillvalue='foo')) print(result)
输出:
[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Python 2.x:替代方法
For Python 2.x 用户寻求等效的解决方案,他们可以利用 itertools.izip_longest (在 Python 中提供) 2.6 ) 或使用带有 None 的 map 作为替代。
result = list(map(None, a, b, c)) print(result)
输出:
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
以上是如何在 Python 中填充压缩列表以匹配最长长度?的详细内容。更多信息请关注PHP中文网其他相关文章!