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

Python中如何为数值列表每个元素生成前三个数并合并为有序新列表

实现需求的高效方案

你的需求是对原列表中的每个元素,生成其本身和前面连续3个小于它的整数,最终合并为升序列表,以下是两种最高效的实现方式:

方式1:列表推导式(最简洁,适合绝大多数场景)

你给出的原列表本身已经是升序排列,且每个元素的最小生成值都大于前一个元素的最大生成值,直接拼接生成的范围天然有序,不需要额外排序,时间复杂度为O(n)(n为最终列表长度):

list1 = [15,27,48,70,83]
# 对每个x生成range(x-3, x+1),展开后合并为新列表
list1 = [num for x in list1 for num in range(x-3, x+1)]

运行后list1的内容就是你需要的目标结果。

如果你的原列表本身是无序的,可以先排序再生成,性能依然远高于先生成所有元素再排序:

list1 = [num for x in sorted(list1) for num in range(x-3, x+1)]

方式2:itertools拼接(适合处理超大规模的原列表)

如果原列表长度极大,用itertools.chain可以减少内存占用,性能和列表推导式相当:

from itertools import chain
list1 = [15,27,48,70,83]
list1 = list(chain.from_iterable(range(x-3, x+1) for x in list1))

说明

你目前给出的示例代码只能将原列表的每个元素减1,得到的是[14,26,47,69,82],无法实现生成连续数的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:04