首页 > 后端开发 > Python教程 > 如何在 Python 中填充压缩列表以匹配最长长度?

如何在 Python 中填充压缩列表以匹配最长长度?

Barbara Streisand
发布: 2024-11-28 07:30:13
原创
650 人浏览过

How Can I Pad Zipped Lists in Python to Match the Longest Length?

将压缩列表填充到最长长度

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板