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

如何高效实现多数值范围与字符串的拼接?

更高效的实现方案

你的需求是生成包含三个数值范围的Class_xxx格式字符串列表,原代码通过三次列表推导式相加实现,确实存在可以优化的空间,主要体现在减少中间内存开销和简化逻辑上:

优化方向1:合并区间遍历,避免创建多个中间列表

原代码会生成三个独立的列表再合并,额外占用内存存储中间结果。可以先定义所有数值区间,通过嵌套循环一次性生成最终列表:

# 注意:range的结束值要+1才能覆盖需求的上限(比如1-20对应range(1,21))
ranges = [(1, 21), (2041, 2056), (5001, 5005)]
result = [f"Class_{i}" for start, end in ranges for i in range(start, end)]

同时用f-string替代"Class_"+str(i),这是Python中更高效的字符串格式化方式,代码也更简洁。

优化方向2:用itertools.chain合并迭代器(适合大数据量场景)

如果数值范围很大,使用itertools.chain可以惰性合并多个range对象,不需要提前创建任何中间列表,进一步降低内存消耗:

from itertools import chain

result = [f"Class_{i}" for i in chain(
    range(1, 21),
    range(2041, 2056),
    range(5001, 5005)
)]

注意点

原代码中的range(1,20)实际生成的是1-19的数值,若要完全覆盖需求的1-20,需要将range的结束值设为21,同理2041-2055对应range(2041,2056),5001-5004对应range(5001,5005)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:32:13