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

如何批量将嵌套列表转换为按元素位置重组的新嵌套列表

嵌套列表的列转置实现

你需要将嵌套列表A转置为新的嵌套列表B——B的第n个子列表包含A中所有子列表的第n个元素,这本质上是嵌套列表的转置操作,下面是几种高效的实现方式:

示例说明

原列表:

A = [[100,200,300], [400,500,600], [1000,1500,300]]

转置后目标列表:

B = [[100,400,1000], [200,500,1500], [300,600,300]]

方法1:用内置zip()函数(推荐,高效简洁)

Python内置的zip()函数可以直接按位置配对多个可迭代对象的元素,完美适配转置需求。只需将zip()返回的元组迭代器转为列表即可:

A = [[100,200,300], [400,500,600], [1000,1500,300]]
B = [list(column) for column in zip(*A)]
print(B)

这种方法完全利用Python内置的高效实现,处理数百个子列表毫无压力。

方法2:手动索引遍历(适合理解原理)

如果想搞清楚底层逻辑,可以通过遍历子列表的索引,逐个收集对应位置的元素:

A = [[100,200,300], [400,500,600], [1000,1500,300]]
# 假设所有子列表长度一致,取第一个子列表的长度作为列数
column_num = len(A[0])
B = []
for idx in range(column_num):
    # 收集每个子列表的第idx个元素
    new_sub_list = [sub[idx] for sub in A]
    B.append(new_sub_list)
print(B)

可选:处理子列表长度不一致的场景

如果你的嵌套列表存在长度不同的子列表,默认zip()会以最短子列表为准截断元素。若要保留所有元素,可使用itertools.zip_longest()来填充缺失值:

from itertools import zip_longest

A = [[100,200], [400,500,600], [1000]]
# fillvalue设置缺失元素的填充值,这里用None,可按需修改
B = [list(column) for column in zip_longest(*A, fillvalue=None)]
print(B)
# 输出:[[100, 400, 1000], [200, 500, None], [None, 600, None]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:22:49