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

Python:如何合并两个列表并交换指定元素分组?

解决列表分组交替拼接的问题

嘿,我来帮你搞定这个需求!先确认下你的目标:把l1和l2按每3个元素为一组,交替选取两个列表的组来拼成l3——具体就是第1、3组用l1的元素,第2、4组用l2的对应元素,对吧?

下面给你几种不同场景下的实现方式:

方法1:直接切片拼接(适合固定长度的场景)

因为你的列表长度刚好是12,分成4组每组3个元素,直接通过切片截取需要的部分再拼接是最直观的:

l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
l2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']

# 按组截取对应切片,按顺序拼接
l3 = l1[0:3] + l2[3:6] + l1[6:9] + l2[9:12]
print(l3)  # 输出: [1, 2, 3, 'd', 'e', 'f', 7, 8, 9, 'j', 'k', 'l']

解释:Python的切片是左闭右开的,0:3对应前3个元素(索引0、1、2),3:6对应第4-6个元素(索引3、4、5),以此类推,直接把需要的片段按顺序相加就能得到目标列表。

方法2:循环分组处理(适合通用长度的场景)

如果你的列表可能更长,或者分组大小有变化,用循环来动态处理会更灵活:

l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
l2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']

group_size = 3  # 每组的元素个数
l3 = []
total_groups = len(l1) // group_size  # 计算总组数

for group_idx in range(total_groups):
    start = group_idx * group_size
    end = start + group_size
    # 奇数索引的组(第2、4...组)用l2,偶数索引的组(第1、3...组)用l1
    if group_idx % 2 == 1:
        l3.extend(l2[start:end])
    else:
        l3.extend(l1[start:end])

print(l3)

这个方法的优势在于,只要l1和l2长度相同且是group_size的倍数,不管多长都能自动按规则拼接。

方法3:列表推导式(简洁优雅的实现)

用列表推导式可以把逻辑浓缩成一行代码,可读性也不错:

l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
l2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']

group_size = 3
l3 = [
    l2[i] if (i // group_size) % 2 == 1 else l1[i]
    for i in range(len(l1))
]

print(l3)

逻辑说明:对每个元素的索引i,先计算它属于第几组(i // group_size),如果是奇数组(对应第2、4组)就取l2的元素,否则取l1的元素。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:08:54