Я пытался заставить цикл 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 из старого списка?