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

如何高效将基础列表元素转换为连续元素列表?

高效转换基础列表为连续序列列表

这个需求其实很常见,用Python可以轻松高效地实现,我给你两种实用的解法:

方法一:嵌套列表推导式(简洁高效)

这种方式利用Python的列表推导式特性,底层经过优化,执行速度很快,代码也很简洁:

def expand_continuous_sequence(base_list, count):
    # 遍历原列表每个元素,生成从x到x+count-1的连续整数
    return [num for x in base_list for num in range(x, x + count)]

# 测试示例
base = [1, 4, 10]
print(expand_continuous_sequence(base, 2))  # 输出: [1, 2, 4, 5, 10, 11]
print(expand_continuous_sequence(base, 3))  # 输出: [1, 2, 3, 4, 5, 6, 10, 11, 12]

解释:外层循环遍历原列表的每个元素x,内层循环通过range(x, x+count)生成从x开始的count个连续整数,最后将所有整数收集到一个列表中。

方法二:itertools.chain(内存友好,适合大数据量)

如果你的基础列表非常大,推荐用这种惰性求值的方式,它不会一次性创建所有子列表,而是逐个生成元素,能有效节省内存:

from itertools import chain

def expand_continuous_sequence(base_list, count):
    # 生成器表达式逐个生成子序列,再通过chain拼接
    return list(chain.from_iterable(range(x, x + count) for x in base_list))

# 测试示例
base = [1, 4, 10]
print(expand_continuous_sequence(base, 2))  # 输出: [1, 2, 4, 5, 10, 11]
print(expand_continuous_sequence(base, 3))  # 输出: [1, 2, 3, 4, 5, 6, 10, 11, 12]

解释:range(x, x+count)本身就是惰性的生成器,chain.from_iterable会逐个迭代这些生成器的元素,最后转成列表。这种方式在处理百万级以上的基础列表时,内存占用会比列表推导式小很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:09