Python 创建元素列表并求和
我从Python开始,需要计算由操作及其初始价格组成的投资组合的损益。我也有一份市场实际价格的清单 实际上,我想把pnl函数中的所有元素求和,但这不起作用,因为它是一个列表,我能做些什么 这是我的密码:Python 创建元素列表并求和,python,python-3.x,list,sum,Python,Python 3.x,List,Sum,我从Python开始,需要计算由操作及其初始价格组成的投资组合的损益。我也有一份市场实际价格的清单 实际上,我想把pnl函数中的所有元素求和,但这不起作用,因为它是一个列表,我能做些什么 这是我的密码: aapl = [ 10, 154.12 ] goog = [ 2, 812.56 ] tsla = [ 12, 342.12 ] fb = [ 18, 209.0 ] portfolio = [aapl, goog, tsla, fb] market = [ 198.84, 1217
aapl = [ 10, 154.12 ]
goog = [ 2, 812.56 ]
tsla = [ 12, 342.12 ]
fb = [ 18, 209.0 ]
portfolio = [aapl, goog, tsla, fb]
market = [ 198.84, 1217.93, 267.66, 179.06 ]
sum(market)
for i in range(0,4):
pnl = portfolio[i][0] * (market[i] - portfolio[i][1])
print(pnl)
type(pnl)
谢谢大家! 您需要保持一个运行总数,如下所示:
profit = 0
for (shares, init_price), market_price in zip(portfolio, market):
profit += shares * (market_price - init_price)
print(profit)
或者您可以在列表中使用sum
:
profit = sum(shares * (market_price - init_price)
for (shares, init_price), market_price
in zip(portfolio, market))
您只需在
for
循环之前定义pnl
列表,而不仅仅是附加在for
循环中计算的每个项目,最后您可以对列表元素求和:
aapl = [ 10, 154.12 ]
goog = [ 2, 812.56 ]
tsla = [ 12, 342.12 ]
fb = [ 18, 209.0 ]
portfolio = [ aapl, goog, tsla, fb ]
market = [ 198.84, 1217.93, 267.66, 179.06 ]
sum(market)
pnl = []
for i in range(0,4):
pnl.append(portfolio[i][0]*(market[i]-portfolio[i][1]))
print(sum(pnl))
输出:
-174.49999999943
如果不想将每个pnl
值保留在列表中:
pnl = 0
for i in range(0,4):
pnl += portfolio[i][0]*(market[i]-portfolio[i][1])
print(pnl)
输出:
-174.49999999943
如果您想要一行,可以使用:
sum(p0 * (m - p1) for [p0, p1], m in zip(portfolio, market))
输出:
-
174.49999999943
将表格添加到您要分配给pnl
的代码中4次,而不是添加到其中。首先,创建pnl=0
,然后在每个循环迭代调用中pnl+=portfolio[i][0]*…
谢谢,太棒了!