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

Python如何将不同子列表按指定次数重复后生成目标嵌套列表

Python列表按指定次数重复拼接解决方案

问题说明

现有待重复子列表及对应重复次数:

  • [0, 1] 重复3次
  • [1, 3] 重复2次
  • [2, 5] 重复4次
    原写法[[[0,1]]*3,[[1,3]]*2,[[2,5]]*4]会将每个重复后的子列表组单独作为外层列表的元素,因此多了一层嵌套,以下是两种可得到目标结果的方案:

方案1:直接生成目标列表(无需后续扁平化)

使用两层列表推导式直接拼接所有重复后的子列表,代码如下:

source_lists = [[0,1], [1,3], [2,5]]
repeat_counts = [3, 2, 4]

# 写法1:按次数循环返回对应子列表
target = [sub_list for sub_list, cnt in zip(source_lists, repeat_counts) for _ in range(cnt)]

# 写法2:先重复再展开,效果一致
# target = [item for sub_list, cnt in zip(source_lists, repeat_counts) for item in [sub_list]*cnt]

print(target)
# 输出:[[0, 1], [0, 1], [0, 1], [1, 3], [1, 3], [2, 5], [2, 5], [2, 5], [2, 5]]

方案2:对现有嵌套结果仅降一层扁平化

如果已经生成了多一层嵌套的结果,可以用以下两种方法快速仅降一层:

方法1:列表推导式(最常用,无需导入依赖)

nested_result = [[[0,1],[0,1],[0,1]],[[1,3],[1,3]],[[2,5],[2,5],[2,5],[2,5]]]
flat_result = [item for sub_group in nested_result for item in sub_group]
print(flat_result)
# 输出和目标一致

方法2:使用itertools.chain

import itertools

nested_result = [[[0,1],[0,1],[0,1]],[[1,3],[1,3]],[[2,5],[2,5],[2,5],[2,5]]]
flat_result = list(itertools.chain.from_iterable(nested_result))
print(flat_result)
# 输出和目标一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:36:03