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

如何用Python交替合并两个不等长列表?(优先列表推导式)

交替合并长度不一致的两个列表

给定两个列表:

list1 = ['A']
list2 = [1, 2, 3, 4]

尝试了如下列表推导式:

combination = [x for y in zip(list1, list2) for x in y]
# 输出结果:
['A', 1]

但预期输出是:

['A', 1, 'A', 2, 'A', 3, 'A', 4]

解决方案(优先列表推导式)

方法1:借助itertools.cycle实现循环复用短列表

利用cycle可以无限循环迭代短列表元素的特性,和长列表配对后展开:

from itertools import cycle

combination = [x for pair in zip(cycle(list1), list2) for x in pair]
print(combination)
# 输出:['A', 1, 'A', 2, 'A', 3, 'A', 4]

cycle(list1)会持续输出'A',直到list2的元素全部配对完成,最后通过嵌套推导式把每一对的元素依次放入结果列表。

方法2:不依赖标准库的实现

手动将短列表重复到和长列表相同长度,再进行配对展开:

combination = [x for pair in zip(list1 * len(list2), list2) for x in pair]
print(combination)
# 输出:['A', 1, 'A', 2, 'A', 3, 'A', 4]

list1 * len(list2)会把list1重复4次,生成['A', 'A', 'A', 'A'],之后和list2一一配对,再展开每一对元素得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:45:34