【发布时间】:2021-05-29 10:20:15
【问题描述】:
我知道这可能是一个相当简单的问题,但我花了好几个小时才弄清楚。
我正在尝试使用for loop 访问元组中的每个值来计算每个元组的概率。
for i in range(len(grouped)):
probabilities[class_number] *= summarise_list[i]
summarise_list[i]:
[(3031.660194174757, 136.76461483348012, 103), (136.64077669902912, 113.70531696131526, 103), (11.03883495145631, 5.842579221772521, 103), (324.9611650485437, 233.42685474528514, 103), (36.12621359223301, 40.204057841157116, 103), (4325.728155339806, 1102.084194803101, 103), (216.28155339805826, 18.280718158399203, 103), (223.4368932038835, 17.165669057009026, 103), (140.54368932038835, 25.034398569681457, 103), (4300.592233009709, 1621.3665105421753, 103)]
[(3031.660194174757, 136.76461483348012, 103), (136.64077669902912, 113.70531696131526, 103), (11.03883495145631, 5.842579221772521, 103), (324.9611650485437, 233.42685474528514, 103), (36.12621359223301, 40.204057841157116, 103), (4325.728155339806, 1102.084194803101, 103), (216.28155339805826, 18.280718158399203, 103), (223.4368932038835, 17.165669057009026, 103), (140.54368932038835, 25.034398569681457, 103), (4300.592233009709, 1621.3665105421753, 103)]
...
...
想法是遍历元组,查看i (x,x,x),仅比较(x,x,x) 中的前两个值,并返回要在probabilities[class_number] 乘法中计算的最大值。
例如,(3031.660194174757, 136.76461483348012, 103) 将返回 3031.660194174757。接下来i、(136.64077669902912, 113.70531696131526, 103) 将返回136.64077669902912。 103(第三个元素)在所有情况下都将被忽略。 3031、136 等的结果将相乘。这需要在每个元组中完成以找到每个元组的每个概率。
效率在这里很重要,因为我必须处理数千行。
感谢任何帮助,谢谢。
附注:我已经阅读了Accessing a value in a tuple that is in a list,但仍然无法解决。
【问题讨论】:
标签: python-3.x list performance loops