使范围列表在指定值处开始和结束的 Pythonic 方法,这需要第一步小于列表其余部分的步骤

Pythonic way to make a range list start and end where at specified values which requires the first step to be less than the step for the rest of list

我有一些有效的代码,但我想知道是否有 pythonic 方法可以做到这一点。用户需要一个频率列表来测试,它永远不会从 0Hz 开始,用户将输入开始、停止和步进值以生成一个值列表来测试一些设备,他们需要的是一个以这些值开始和停止的列表而不是 python 使用的范围。我有这个可以用,但我必须捏造起始值。

代码

start = 1
stop = 100
step = 10
out = (list(range(start-start, stop+step, step)))
out[0] = start
print(out)

输出

[1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

是否有一种 pythonic 方法可以生成列表而无需使用

out[0] = start

行?

如果你想将相同的逻辑重构为更 pythonic 的方法,你可以使用列表理解

out = [start if i == 0 else i for i in range(start-start, stop+step, step)]

在列表理解中使用 if/else 的另一种方法,仅使用 range(start,stop,step) :

out = [1 if n==0 else n for n in range(0, 100, 10)]