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

如何更优雅地实现Python列表转换为[[index]*value]的扁平化输出

Python列表下标按元素值重复输出的优雅实现

你可以直接用嵌套列表推导式实现,无需额外依赖,写法简洁同时保持了较好的可读性:

A = [1, 2, 3, 1]
result = [i for i, n in enumerate(A) for _ in range(n)]

运行后输出结果和你原有实现完全一致:[0, 1, 1, 2, 2, 2, 3]。

如果需要处理规模很大的列表,追求更高的内存效率,可以使用itertools工具实现,避免生成大量临时小列表:

from itertools import repeat, chain

A = [1, 2, 3, 1]
result = list(chain.from_iterable(repeat(i, n) for i, n in enumerate(A)))

两种实现的适用场景对比:

  • 列表推导式:无额外依赖,写法最简洁,适合中小规模列表的日常场景,是绝大多数情况下的首选
  • itertools实现:基于迭代器惰性生成元素,内存占用更低,处理百万级以上元素的超大列表时性能优势更突出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:10