簡體   English   中英

遍歷列表Python,建立索引(基本引導程序)

[英]Looping over lists Python, indexing (basic bootstrap)

給出以下兩個列表:

dates = [1,2,3,4,5]
rates = [0.0154, 0.0169, 0.0179, 0.0187, 0.0194]

我想生成一個列表df = []

練習中使用與“純” Python(無Numpy)中的日期和比率(0到4 = 5個元素)相同的長度。

df [i]等於:

df[0] = (1 / (1 + rates[0])  
df[1] = (1 - df[0] * rates[1]) / (1 + rates[1])
...
df[4] = (1 - (df[0] + df[1]..+df[3])*rates[4]) / (1 + rates[4])

我正在嘗試:

df = [] 
df.append(1 + rates[0])  #create df[0]  
for date in enumerate(dates, start = 1):
   running_sum_vec = 0
   for i in enumerate(rates, start = 1):
       running_sum_vec += df[i] * rates[i]
df[i] = (1 - running_sum_vec) / (1+ rates[i])
return df

但是正在獲取TypeError:列表索引必須是整數。 謝謝。

因此,枚舉方法返回兩個值:索引和值

>>> x = ['a', 'b', 'a']
>>> for y_count, y in enumerate(x):
...     print('index: {}, value: {}'.format(y_count, y))
... 
index: 0, value: a
index: 1, value: b
index: 2, value: a

這是因為for i in enumerate(rates, start = 1): enumerate生成索引和列表中對象的元組。 你應該做類似的事情

for i, rate in enumerate(rates, start=1):
    running_sum_vec += df[i] * rate

您還需要修復另一個循環( for date in enumerate... )。

您還需要將df[i] = (1 - running_sum_vec) / (1+ rates[i])返回到循環中(當前它只會設置最后一個值)(並更改為追加值,因為當前它將嘗試設置為超出范圍的索引)。

枚舉返回索引和條目。 因此,假設列表包含整數,則您的代碼可以是:

df = [] 
df.append(1 + rates[0])  #create df[0]  
for date in dates:
   running_sum_vec = 0
   for i, rate in enumerate(rates[1:], start = 1):
       running_sum_vec += df[i] * rate
df[i] = (1 - running_sum_vec) / (1+ rate)
return df

盡管我幾乎是肯定的,但是列表理解還是有辦法的。 我必須考慮一下。

不確定這是否是您想要的:

df = []
sum = 0

for ind, val in enumerate(dates):
    df.append( (1 - (sum * rates[ind])) / (1 + rates[ind]) )
    sum += df[ind]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM