Python 嵌套for循环以填充列表列表
我正在尝试填写以下列表:Python 嵌套for循环以填充列表列表,python,list,for-loop,indexing,nested,Python,List,For Loop,Indexing,Nested,我正在尝试填写以下列表: Qlist = [[] for i in range(len(bestgr))] for par in bestgr: for day in range(71,72): for n in range(len(bestgr)): option_data, index_prices, initial_date = getsamedatedopt(fullData, day, 1) gr
Qlist = [[] for i in range(len(bestgr))]
for par in bestgr:
for day in range(71,72):
for n in range(len(bestgr)):
option_data, index_prices, initial_date = getsamedatedopt(fullData, day, 1)
gr = groupbyttm(option_data)
normk, norm_opt, tau, kind, k = intdata(gr, index_prices)
I = intrect(gr, norm_opt, normk, index_prices, kind, par, tau, k)
q = int2D(I, gr, tau)
Qlist[n].append(q)
在这段代码中,“bestgr”是一个用字典表示的参数集列表。我想做的是用上面的代码为每个参数集和每天计算q。代码应该使用与所考虑的天数相等的值填充Qlist中的列表。换句话说,我需要Qlist中的每个列表与一个参数集相关联,并包含每天为该特定集合计算的所有q。在上面的例子中,我有一个由2个元素和一天组成的bestpar,因此我应该获得一个由2个元素组成的列表(第一个列表包含为所选日期的第一组计算的q,第二个列表包含为所选日期的第二组计算的q)。不幸的是,我得到的是[[2.6501,2.6556],[2.6501,2.6556]]
,而不是[[2.6501],[2.6556]
。我如何获得这样的输出
编辑
上述代码中使用的函数涉及给定同一期权的货币性和到期日的二重积分计算。“Bestgr”包含用于为我的选项定价的模型的参数集,而day是作为参数传递给getsamedatedopt
函数的数字。此函数提取相应日期的期权数据(以及计算积分最终值q所需的所有元素)。我想填充空的列表,在参数集和数据集的天数上循环
我希望Qlist中的列表包含数据集中给定参数集每天考虑的二重积分值q。因此,每个嵌套列表引用单个参数集,并包含与所考虑的数据集的天数相等的值。我从上面的代码中得到的是重复的值,因为如果我有两个参数集和一天的数据集,我希望Qlist中有两个嵌套列表,每个列表包含一个值。
更具体地说,我应该获得:
Qlist=[[day1set1][day1set2]]
not Qlist=[[day1set1,day1set2][day1set1,day1set2]]此语句
Qlist[n]。append(q)
向第n个子列表添加一个值。让我们看看它执行的频率
par day n ->
0 71 0 Qlist[0].append(q)
0 71 1 Qlist[1].append(q)
1 71 0 Qlist[0].append(q)
1 71 1 Qlist[1].append(q)
我认为这张表清楚地说明了为什么每个子列表有2个值
下面是一个简单得多的代码版本,希望它能满足您的需要:
qslist = []
for par in bestgr:
qlist = []
for day in range(71,72):
option_data, index_prices, initial_date = getsamedatedopt(fullData, day, 1)
# blah blah blah domain-specific stuff
q = int2D(I, gr, tau)
qlist.append(q)
qslist.append(qlist)
永远记住:创建复杂的、不可理解的代码是很容易的,但是这些代码不起作用。我们应该争取的恰恰相反:工作代码,尽可能简单易读 你的问题很令人困惑。请更清楚地解释你想要什么,你得到什么,你期望得到什么,以及你数据的确切形式。@Carnivore先生,我编辑了这个问题。这不容易解释,因为后面有很多工作,也许我认为有些事情是理所当然的。我希望现在更容易理解,这正是我一直在寻找的解决方案。我没有想过要写这样的for循环。非常感谢。