鉴于这两个清单:
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.50
和3.00
必须被忽略)。然后,作为第二个任务,我们需要输出相应的元组表单列表first
。所以它应该导致:
('-2.50', '1.91', '2.03')
这是因为在第一步中找到的最大值应该是1.069258
,它位于第一元组内。
我在这里遇到的障碍是找到具有最大价值的元组(我知道我可以使用max()
来找到值,但我需要整个元组),问题的第二部分我想我会只需使用if
语句即可。
答案 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)