You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将任意维度的列表列表转换为列列表?

Python 实现列表列表转列列表集合

要把任意维度的列表列表(矩阵)转换为按索引分组的列列表集合,用Python内置的zip()函数就能高效实现,无需额外复杂逻辑。

基础用法(子列表长度一致时)

针对你提供的示例,直接通过以下代码完成转换:

x = [
     [1, 0, 0, 0, 1, 0, 0],
     [0, 0, 2, 2, 0, 0, 0],
     [0, 1, 0, 0, 0, 2, 2]
 ]
# 转置矩阵并将每个元组转为列表
y = [list(col) for col in zip(*x)]
print(y)

执行后输出结果:

[[1, 0, 0], [0, 0, 1], [0, 2, 0], [0, 2, 0], [1, 0, 0], [0, 0, 2], [0, 0, 2]]

原理说明

zip(*x)通过解包操作,将原列表中的每个子列表作为独立参数传入zip()函数。zip()会依次提取所有子列表的同索引元素,组成元组(比如第1个元组是所有子列表的第0个元素,第2个元组是所有子列表的第1个元素……),最后通过列表推导式将每个元组转换为列表,就得到了按列分组的结果。

处理子列表长度不一致的情况

如果原列表中各子列表长度不同,zip()会自动以最短的子列表为准截断结果。若需要保留所有元素,可使用itertools模块的zip_longest(),并指定缺失值的填充内容:

from itertools import zip_longest

# 示例:子列表长度不同的情况
x = [[1, 2], [3], [4, 5, 6]]
# 用None填充缺失的元素
y = [list(col) for col in zip_longest(*x, fillvalue=None)]
print(y)

执行后输出:

[[1, 3, 4], [2, None, 5], [None, None, 6]]

内容的提问来源于stack exchange,提问作者layan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:01:12