【发布时间】:2019-09-22 01:57:09
【问题描述】:
我一直在尝试让我的 for 循环遍历名为 pdg_vals 的列表的完整值。我想获取所有 14 值的索引号。然后我想使用这些索引值创建一个新列表。
Python 不断返回该规定的第一个实例。也就是说,它表明我正在附加的新列表 (pdg_ent) 仅填充了 pdg_vals 值为 14 的第一个实例的索引值。
我尝试使用 += 操作进行追加。
代码如下:
myfile = ROOT.TFile("/home/hilary/root/compile/Research/GENIE_atm.root")
mydir = myfile.GENIE
mytree = mydir.Get("Event")
pdg_vals = [] #an empyt list to fill pdg values
for e in mytree:
for v in e.mc_pdg:
pdg_vals += [v] #fill empty list with mc_pdg values
#pdg_vals
pdg_ent = []
for x in pdg_vals:
if x == 14:
pdg_ent += [pdg_vals.index(x)]
pdg_ent
pdg_vals 列表如下所示:
[12,
1000180400,
2112,
1000180390,
11,
2212,
2212,
2000000002,
2000000101,
14,
1000180400,
2212,
1000170390,
14,
2214,
2212,
111,
2212,
111,
2212,
2000000002,
12,
...]
显然,如果我正确编写代码,我的新 pdg_ent 列表中的第一个值应该是 9,第二个应该是 13 等等......
这是 pdg_ent 的输出
[9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
9,
...]
为什么 python 在新列表中只添加旧列表中值 14 的第一个实例?
【问题讨论】:
标签: python-3.x list indexing