从数据长度计算中得到错误的答案

Getting wrong answer from data length calculation

我有一个由我定义的函数中的 41 个数据组成的列表,但我只想访问其中的前 40 个。所以,我要找的索引位置是从 0 - 39

forecast_price(10)[:len(forecast_price(10)) - 1] 

我还把它变成了一个变量,以便在我的代码中进一步参考:

forecast_w10 = forecast_price(10)[:len(forecast_price(10)) - 1] 

然而,当我尝试打印变量中数据的长度时,我仍然得到 41。我觉得错误就在我眼皮底下,但似乎无法弄清楚。我做错了什么?

In[46]: print(len(forecast_w10))
Out[46]: 41

为了可重复性,我们假设 forecast_price 是一个函数 returns 41 个元素的列表,从给定的初始值开始 x:

def forecast_price(x):
    return [i + x for i in range(41)]

print(forecast_price(1))          # [1, 2, 3, ..., 39, 40, 41]
print(len(forecast_price(1)))     # 41

print(forecast_price(10))         # [10, 11, 12, ..., 48, 49, 50]
print(len(forecast_price(10)))    # 41

由于您只想访问前 40 个值,请使用切片运算符:

forecast_w10 = forecast_price(10)[:40] 
print(forecast_w10)               # [10, 11, 12, ..., 47, 48, 49]
print(len(forecast_w10))          # 40