【发布时间】:2017-04-10 18:04:00
【问题描述】:
为了使用 Python 模块 Mibian 计算看涨期权,我一直在迭代多个嵌套列表。
如果我使用 mibian 计算组成的欧式看涨期权。
import mibian as mb
mb.BS([stock price, strike price, interest rate, days to maturity], volatility)
my_list = [[20, 25, 30, 35, 40, 45],
[50, 52, 54, 56, 58, 60, 77, 98, 101],
[30, 40, 50, 60]]
为了计算多个看涨期权,首先,我创建了一个范围。
如果我选择,说第一个嵌套列表my_list[0],然后运行for-loop。我得到了股票的所有看涨期权。
range_list = list(range(len(my_list)))
range_list
# [0, 1, 2]
data = dict()
for x in range_list:
data[x] = option2 = []
for i in my_list[0]:
c = mb.BS([120, i, 1, 20 ], 10)
option2.append(c.callPrice)
option2
这给出了 my_list 中第一个嵌套列表的 6 个调用价格。
输出:
[100.01095590221843,
95.013694877773034,
90.016433853327641,
85.019172828882233,
80.021911804436854,
75.024650779991447]
我想弄清楚的是,如何一次迭代所有嵌套列表,并获得一个包含my_list[0]、my_list[1] 和 @ 的看涨期权价格的嵌套列表的新列表987654329@.
我希望对所有三个嵌套列表一次性输出此输出。
输出:
[[100.01095590221843, [70.027389755546068, [90.016433853327641,
95.013694877773034, 68.028485345767905, 80.021911804436854,
90.016433853327641, 66.029580935989742, 80.021911804436854,
85.019172828882233, 64.030676526211579, 70.027389755546068,
80.021911804436854, 62.03177211643343, ]]
75.024650779991447] 60.032867706655267,
43.042180223540925,
22.05368392087027,
19.055327306203068]
有人可以帮忙吗?我敢肯定,我错过了一些非常简单的事情。 非常感谢。 附言在这里编辑我的代码时,我无法正确缩进。
【问题讨论】:
-
请编辑您的问题,stackoverflow.com/help/mcve
-
感谢您的链接,Bhansa。我已经编辑了它,但是如果我编辑得太多,它会丢失很多与问题有关的信息。遗憾的是,我仍然在这个问题上投了反对票。
-
这有点令人困惑。 IIUC,摆脱
range_list = list(range(len(my_list)))、for x in range_list:、data[x] = option2 = []和for i in my_list[0]:。用嵌套缩进替换for i in my_list: for j in i: c = mb.BS([120, j, 1, 20 ], 10)。这是朝着你的目标前进吗?对于你想要做的事情,我是否符合正确的路线? -
为什么
my_list[2]包含 4 个元素,而预期回报却有 5 个? -
您好 MSeifert,哦,感谢您指出这一点。这只是我编辑的一个错误。您指的是 my_list[2] 中的最后一行,60.03286 .....,它实际上只是我复制和粘贴时 my_list[1] 的副本。我会编辑一下,谢谢。
标签: python list loops for-loop nested-lists