寻找具有最大价值的元组

时间:2013-05-04 20:22:34

标签: python list python-2.7 max

鉴于这两个清单:

first = [('-2.50', '1.91', '2.03'), ('3.00', '1.83', '2.08')]
second = [(('-2.50', 0.889258, 1.069258), ('3.00', 0.931381, 1.021381))]

这是一项双任务挑战。 Firslty,在列表second中,我需要识别其中具有最大价值的元组(而位置0处的值:-2.503.00必须被忽略)。然后,作为第二个任务,我们需要输出相应的元组表单列表first。所以它应该导致:

('-2.50', '1.91', '2.03')

这是因为在第一步中找到的最大值应该是1.069258,它位于第一元组内。

我在这里遇到的障碍是找到具有最大价值的元组(我知道我可以使用max()来找到值,但我需要整个元组),问题的第二部分我想我会只需使用if语句即可。

3 个答案:

答案 0 :(得分:5)

一行:

>>> max(zip(first,second[0]),key=lambda x:max(x[1][1:]))[0]
('-2.50', '1.91', '2.03')

答案 1 :(得分:1)

一个班轮:

>>> first [ max(enumerate(second[0]), key=lambda x: max(x[1][1:] ))[0] ]
('-2.50', '1.91', '2.03')

或:

>>> maxx = float("-inf")
>>> for i,x in enumerate(second[0]):
...     temp = max(x[1:]) 
...     if temp > maxx:
...         index = i
...         maxx = temp
...         
>>> first[i]
('-2.50', '1.91', '2.03')

答案 2 :(得分:0)

您希望使用键函数来计算每个元组的比较值。您希望将元组与第一个以外的最大值进行比较,请尝试

>>> max(second[0], key = lambda x: max(x[1:]))
('-2.50', 0.889258, 1.069258)