转置列表的列表
给定列表的列表,例如:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我们的目标是转置列表,结果在:
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
使用 zip
Python 中的 zip() 函数将多个可迭代对象中的元素组合到单个元组列表中。我们可以使用 zip 通过将原始列表作为参数序列传递来创建转置列表:
result = list(map(list, zip(*l)))
外部 list() 将元组转换为列表,map() 函数将此转换应用于zip 结果中的每个元素。
使用 zip_longest
itertools.zip_longest() 函数与 zip 类似,但如果迭代的长度不同,它不会丢弃数据。它使用指定的填充值填充较短的可迭代对象(默认为无):
from itertools import zip_longest result = list(map(list, zip_longest(*l, fillvalue=None)))
说明
转置的关键是使用 zip 来组合来自原始列表的子列表。 zip() 函数生成元组,其中包含同一索引处每个子列表中的一个元素。然后将这些元组转换为列表以创建转置列表的行。
通过使用 * 运算符将原始列表作为 zip 的参数解压,我们可以在一行代码中转置列表。 map() 函数用于确保结果是列表的列表。
以上是如何在 Python 中转置列表列表?的详细内容。更多信息请关注PHP中文网其他相关文章!