2017-06-01 118 views
0

我有x的元組和y瓦爾斯列表listPts,例如:從最小y值的元組中獲取最大x值的最快方法?

[(100.0,400.0),(200.0,600.0),(300.0,600.0),(400.0,400.0)]

使用listPts.index(min(listPts, key=operator.itemgetter(1))我獲取400作爲最小y值。正如你所看到的,兩個元組的y值爲400,(100.0, 400.0)(400.0, 400.0)

什麼是最快,最乾淨的方式來獲取具有最大x值的元組,在這種情況下是(400.0, 400.0)

回答

3

您可以使用一鍵兩個值進行比較,如:

>>> min(listPts, key=lambda x: (x[1], -x[0])) 
(400.0, 400.0) 

如果你願意,你也可以使用enumerate(),避免調用index()指標如:

>>> index, result = min(enumerate(listPts), key=lambda x: (x[1][1], -x[1][0])) 
>>> index 
3 
>>> result 
(400.0, 400.0) 
+0

謝謝你答案。我確定它是正確的,但是我在'min(listPts,key = lambda x =(x [1],-x [0]))''上得到最後括號的語法錯誤。我不知道爲什麼。 –

+0

對不起,錯字固定。 Lambda是用':'而不是'='定義的。 – AChampion

相關問題