我正在尝试创建一个使用值和值索引的函数,从1开始将值放入函数中并求和整个列表。
换句话说,我试图获取不相同的现金流量列表的现值,因此必须计算每种现金流量的现值并将它们相加。
这是我尝试过的。
cash = [10,10,10,10, 10, 10, 11, 10]
DiscoutRate = 0.12
for (period, value) in enumerate(cash, start=1):
PV = value/((1+DiscountRate)**period)
print(PV)
但是我发现结果不正确,有什么想法吗?
答案 0 :(得分:8)
请注意,此解决方案使用Generator Expression。
>>> sum(value/((1 + DiscountRate) ** period) for period, value in enumerate(cash, start=1))
50.1287
答案 1 :(得分:0)
您也可以使用python的map函数来实现全面性。
cash = [10,10,10,10, 10, 10, 11, 10]
def get_pv(ele):
discount_rate = 0.12
period, value = ele
return value / ( (1+discount_rate) ** period )
out = list(map(get_pv, enumerate(cash, start=1)))
print(sum(out))