首页 > 解决方案 > 访问和提取列表中元组中的值?

问题描述

我知道这可能是一个相当简单的问题,但我花了好几个小时才弄清楚。

我正在尝试使用 afor 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.64077669902912103(第三个元素)在所有情况下都将被忽略。3031、136 等的结果将相乘。这需要在每个元组中完成以找到每个元组的每个概率。

效率在这里很重要,因为我将不得不处理数千行。

感谢任何帮助,谢谢。

旁注:我已通读访问列表中的元组中的值但仍无法解析它。

标签: python-3.xlistperformanceloops

解决方案


您可以通过切片元组并使用 max 函数来做到这一点:

for i in range(len(grouped)):
    probabilities[class_number] *= max(summarise_list[i][:2])

推荐阅读