Python如何生成以指定常量为中心按固定间隔扩展的数值列表
Python 生成对称间隔数值列表的高效实现
以下是几种不同场景下的实现方案,均可以直接调整单侧点数、间隔步长适配不同需求:
方案1:纯Python列表推导式(无额外依赖,优先推荐)
不需要导入任何第三方库,运行效率高,适合绝大多数轻量场景:
constant_value = 1.0 step = 0.1 # 单侧取值个数,对应需求里的上下各4个 side_count = 4 output_list = [constant_value + (i - side_count) * step for i in range(2 * side_count + 1)]
如果遇到浮点数二进制精度问题(比如输出出现0.6000000000000001这类值),可以加round控制小数位数:
output_list = [round(constant_value + (i - side_count) * step, len(str(step).split('.')[-1])) for i in range(2 * side_count + 1)]
方案2:高精度场景用decimal模块
对数值精度要求极高的场景,用decimal模块避免浮点数精度丢失:
from decimal import Decimal constant_value = Decimal("1.0") step = Decimal("0.1") side_count = 4 output_list = [float(constant_value + (i - side_count) * step) for i in range(2 * side_count + 1)]
方案3:numpy生态下的linspace实现
如果已经在使用numpy做数值计算,用linspace代码更简洁:
import numpy as np constant_value = 1.0 step = 0.1 side_count = 4 output_list = np.linspace( start=constant_value - side_count * step, stop=constant_value + side_count * step, num=2 * side_count + 1 ).tolist()
三种方案输出结果都和示例的[0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4]完全一致。
内容的提问来源于stack exchange,提问作者mrp
相关产品推荐
相关产品推荐

