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

如何在Python中按元素位置重组列表的列表

如何按元素位置转置嵌套列表?

给定嵌套列表:

list1 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]

需要按元素位置创建新的嵌套列表,得到结果:

list2 = [['a', 'd', 'g', 'j'], ['b', 'e', 'h', 'k'], ['c', 'f', 'i', 'l']]

尝试了以下for循环代码,但仅生成一维列表:

res = []
for listing in list1:
    for i in list:
        res.append(i)

解决方法

方法1:使用Python内置zip()函数(最简洁)

zip()可以将多个可迭代对象对应位置的元素打包,结合列表推导式即可快速实现转置:

list1 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]
list2 = [list(item) for item in zip(*list1)]
print(list2)
# 输出:[['a', 'd', 'g', 'j'], ['b', 'e', 'h', 'k'], ['c', 'f', 'i', 'l']]
  • *list1是解包操作,将原列表中的4个子列表作为独立参数传入zip();
  • zip()会依次提取每个子列表的第0位、第1位、第2位元素打包成元组;
  • 最后通过列表推导式将每个元组转换为列表,得到目标嵌套列表。

方法2:手动编写循环(理解底层逻辑)

之前的循环未按位置分组,正确的循环逻辑需要按索引遍历元素位置,收集对应元素:

list1 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]
res = []
# 外层循环遍历目标子列表的位置(共3个位置)
for idx in range(len(list1[0])):
    sub_list = []
    # 内层循环遍历原列表的每个子列表,收集对应索引的元素
    for sub in list1:
        sub_list.append(sub[idx])
    res.append(sub_list)
print(res)
# 输出:[['a', 'd', 'g', 'j'], ['b', 'e', 'h', 'k'], ['c', 'f', 'i', 'l']]
  • 外层循环控制目标子列表的索引(0、1、2);
  • 内层循环遍历原列表的每个子列表,将对应索引的元素添加到临时子列表中;
  • 每个临时子列表构建完成后,添加到结果列表里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:00:48