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

如何基于给定嵌套列表生成按对应索引元素重组的新嵌套列表

实现方法(Python环境)

你要实现的操作本质是二维列表的转置,可以按以下几种常见场景选择对应实现方式:

方法1:使用内置zip函数(最简写法,适配等长子列表场景)

所有子列表长度一致的场景下,直接用zip解包原列表即可,示例代码:

original = [[5,6,3],[2,0,4],[3,8,5]]
transposed = list(map(list, zip(*original)))
print(transposed) # 输出 [[5, 2, 3], [6, 0, 8], [3, 4, 5]]

原理说明:*original会把原嵌套列表的每个子列表拆成zip的独立入参,zip会按索引位置配对各入参的元素,最后用map(list, ...)把zip返回的元组批量转成列表。


方法2:列表推导式(可读性高,支持自定义规则)

如果需要更灵活的控制逻辑,可以用列表推导式实现,方便后续扩展自定义规则:

original = [[5,6,3],[2,0,4],[3,8,5]]
# 确认所有子列表等长的前提下,取第一个子列表的长度作为列数
col_count = len(original[0])
transposed = [[row[i] for row in original] for i in range(col_count)]
print(transposed) # 输出 [[5, 2, 3], [6, 0, 8], [3, 4, 5]]

方法3:适配不等长子列表的场景

如果原列表的子列表长度不一致,用zip会自动截断到最短子列表的长度,如果你需要保留所有元素,缺省位置补默认值,可以用itertools.zip_longest:

from itertools import zip_longest
original = [[5,6],[2,0,4],[3,8,5,9]]
# 缺省位置补None,也可以指定fillvalue=0等自定义默认值
transposed = list(map(list, zip_longest(*original, fillvalue=None)))
print(transposed) # 输出 [[5, 2, 3], [6, 0, 8], [None, 4, 5], [None, None, 9]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:57:03