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

Python动态长度嵌套列表的转置实现问题

Python动态子列表长度的嵌套列表转置方法

问题场景

给定嵌套列表a,其内部子列表长度会动态增长(每次循环为每个子列表添加一个元素),需要将其转置:提取每个子列表的第n个元素,重组为新的嵌套列表。

示例

初始输入:

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

期望转置结果:

b = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

动态更新后输入:

a = [[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]

对应转置结果:

b = [[1, 4, 7], [2, 5, 8], [3, 6, 9], [4, 7, 10]]

解决方案

方法1:使用zip(子列表长度一致时首选)

利用zip(*a)直接按列提取元素,再通过列表推导式转换为列表:

b = [list(col) for col in zip(*a)]

原理:*a将嵌套列表拆分为多个独立子列表传入zip,zip会依次取每个子列表的同位置元素组成元组,最后将元组转为列表即得到转置结果。

方法2:处理子列表长度不一致的情况(可选)

如果动态更新过程中存在子列表长度暂时不一致的情况,可使用itertools.zip_longest:

from itertools import zip_longest

# fillvalue指定缺失位置的填充值,默认是None
b = [list(col) for col in zip_longest(*a, fillvalue=None)]

方法3:手动循环实现(适合理解逻辑)

先获取最长子列表的长度,再逐个索引提取对应元素:

max_len = max(len(sublist) for sublist in a)
b = []
for n in range(max_len):
    current_col = []
    for sublist in a:
        if n < len(sublist):
            current_col.append(sublist[n])
    b.append(current_col)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:20:27