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

Python如何按索引合并3个数字列表得到指定顺序的新列表

按索引归集多列表元素的实现方案

你要的效果是按索引顺序,依次取出每个列表同位置的元素拼接,最终得到顺序为「所有列表第0位元素、所有列表第1位元素、所有列表第2位元素……」的新列表,以下是两种常用实现:


方法1:通用灵活写法(推荐)

用Python内置的zip函数实现,它的作用就是将多个可迭代对象中同索引的元素打包成元组,刚好匹配你的需求,而且不限制传入列表的数量:

def merge_lists_by_index(*input_lists):
    merged = []
    for same_index_items in zip(*input_lists):
        merged.extend(same_index_items)
    return merged

# 测试用例
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
print(merge_lists_by_index(list1, list2, list3))
# 输出结果:[1, 4, 7, 2, 5, 8, 3, 6, 9]

想要更精简的话可以直接写成列表推导式:

def merge_lists_by_index(*input_lists):
    return [item for item_group in zip(*input_lists) for item in item_group]

方法2:固定3个列表的直白写法

如果确定永远只处理3个固定长度的列表,也可以直接按索引遍历,逻辑一眼能看懂:

def merge_three_lists(l1, l2, l3):
    result = []
    for idx in range(len(l1)):
        result.append(l1[idx])
        result.append(l2[idx])
        result.append(l3[idx])
    return result

补充说明

  • 上述写法默认所有输入列表长度一致。如果列表长度不等,zip会自动以最短的列表为准截断输出;如果需要保留长列表多出的元素,可以替换为标准库itertools中的zip_longest。
  • 两种写法的输出都和你给出的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:30:47