Python中如何一步自动生成首尾固定的等差序列列表?
生成指定长度的首尾固定等差序列
问题背景
我有一个列表A,首元素为20、尾元素为0,需要生成长度为6的列表C(元素为从20到0的等差序列)。目前通过手动编写元素实现,但希望无需手动编写,一步完成生成操作。
原实现代码:
len_A=6 A=[20,0] B=A[0]/(len_A-1) C=[A[0],A[0]-B, A[0]-2*B,A[0]-3*B,A[0]-4*B,0] print(C)
原输出/预期输出:
[20, 16.0, 12.0, 8.0, 4.0, 0]
解决方案
方法1:使用numpy的linspace函数(简洁高效)
numpy提供的linspace可以直接生成起始值、终止值、长度固定的等差序列,一步到位:
import numpy as np len_A = 6 A = [20, 0] C = np.linspace(A[0], A[1], len_A).tolist() print(C)
输出结果:[20.0, 16.0, 12.0, 8.0, 4.0, 0.0](若需要首元素为整数20,可通过int()转换或调整参数)
方法2:纯Python实现(无需第三方库)
如果不想依赖numpy,用列表推导式即可自动计算每个元素:
len_A = 6 A = [20, 0] step = (A[1] - A[0]) / (len_A - 1) C = [A[0] + i * step for i in range(len_A)] print(C)
输出结果:[20, 16.0, 12.0, 8.0, 4.0, 0.0],完全符合预期,且无需手动编写每个元素。
内容的提问来源于stack exchange,提问作者namo2014_24
相关产品推荐
相关产品推荐

