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

Python如何实现交替从任意数量不等长列表各取k个元素合并

Python 嵌套列表按规则合并实现方案

方案1:基于itertools标准库的简洁实现

完全贴合你描述的三步逻辑,符合Pythonic编码规范:

from itertools import zip_longest, chain

k = 2
mylist = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]

modified_mylist = list(chain.from_iterable(
    chunk
    for batch in zip_longest(*[[s[i:i+k] for i in range(0, len(s), k)] for s in mylist])
    for chunk in batch if chunk is not None
))

print(modified_mylist)
# 输出:[1, 2, 5, 6, 8, 9, 12, 13, 3, 4, 7, 10, 11, 14, 15]

逻辑对应说明:

  • 内层列表推导完成子列表的固定大小分块
  • zip_longest 按序号对齐所有子列表的同批次块,自动填充空值适配不等长子列表
  • 遍历过滤空值后用chain.from_iterable扁平化得到最终结果

方案2:无额外依赖的原生实现

不需要导入任何额外库,逻辑直观易维护:

k = 2
mylist = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]

modified_mylist = []
# 计算所有子列表的最大分块数
max_chunk_cnt = max((len(s) + k - 1) // k for s in mylist)

for chunk_idx in range(max_chunk_cnt):
    start = chunk_idx * k
    end = start + k
    # 依次取每个子列表当前批次的块
    for sublist in mylist:
        modified_mylist.extend(sublist[start:end])

print(modified_mylist)
# 输出:[1, 2, 5, 6, 8, 9, 12, 13, 3, 4, 7, 10, 11, 14, 15]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:45:04