如何根据重复次数嵌套列表重复三层嵌套列表的内层列表
实现嵌套列表按指定次数重复内层元素的方法
没问题,我来帮你搞定这个嵌套列表的重复需求!先明确你的场景:
你有一个三层嵌套的源列表:
rep = [[[1, 3, 5, 3, 7, 43], [6, 5, 2, 56, 4, 12], [5, 2, 5, 2, 5, 7, 1]], [[5, 3, 7, 3, 21], [6, 2, 5, 2,1, 6, 2], [78, 2, 65, 2, 6, 2], [78, 2, 65, 2, 6, 2]]]
还有一个对应层级的重复次数列表:
count = [[5, 2, 5], [5, 2, 4, 5]]
其中count每个子列表的长度和rep对应层级的子列表长度完全一致,需要让rep里的最内层列表按照count中对应的数字重复,生成你预期的输出结构。
解决方案:嵌套列表推导式
用Python的嵌套列表推导式可以简洁高效地实现这个需求,代码如下:
rep = [[[1, 3, 5, 3, 7, 43], [6, 5, 2, 56, 4, 12], [5, 2, 5, 2, 5, 7, 1]], [[5, 3, 7, 3, 21], [6, 2, 5, 2,1, 6, 2], [78, 2, 65, 2, 6, 2], [78, 2, 65, 2, 6, 2]]] count = [[5, 2, 5], [5, 2, 4, 5]] # 核心逻辑:按层级配对,重复内层元素 out = [ [inner_item for idx, inner_item in enumerate(mid_list) for _ in range(count_layer[idx])] for mid_list, count_layer in zip(rep, count) ] # 打印验证结果 print(out)
代码逻辑解释
- 层级配对:用
zip(rep, count)把rep的中间层列表和count的对应次数列表一一配对,确保每一组处理的是对应的层级。 - 内层重复:对于每一组中间层列表和次数列表,遍历每个最内层元素和它对应的重复次数,通过
for _ in range(count_layer[idx])来重复该元素,最终展开成新的中间层列表。 - 组合结果:所有处理后的中间层列表会自动组合成最外层的
out列表,完全匹配你预期的输出结构。
这个写法既简洁又符合Python的惯用风格,运行效率也很高,完美满足你的需求。
内容的提问来源于stack exchange,提问作者Keshav M
相关产品推荐
相关产品推荐

