內子列表項目的最大最佳方法我在格式多維列表:找到列表
list = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
我如何獲得所有子列表的第三值的最大值。在僞代碼:
max(list[0][2], list[1][2], list[2][2])
我知道這可以通過遍歷列表來完成,並提取第三值到一個新的列表,然後簡單地進行max(list)
,但我不知道這是否可以使用Lambda完成或列表理解?
內子列表項目的最大最佳方法我在格式多維列表:找到列表
list = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
我如何獲得所有子列表的第三值的最大值。在僞代碼:
max(list[0][2], list[1][2], list[2][2])
我知道這可以通過遍歷列表來完成,並提取第三值到一個新的列表,然後簡單地進行max(list)
,但我不知道這是否可以使用Lambda完成或列表理解?
只需使用max
與發電機的表達:
>>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
>>> max(l[2] for l in lst)
3
此外,不命名你的變量list
,你正在遮蔽這個類型。
爲什麼downvote?如果有任何錯誤,請幫助我改進我的答案。 –
這應該是公認的答案,因爲它精確而優雅地解決了所描述的問題。 – jbndlr
使用zip
函數獲取列的列表中,然後用一個簡單的索引,以獲得預期的列:
>>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
>>>
>>> max(zip(*lst)[-1]) # in python 3.x max(list(zip(*lst))[-1])
3
相互替代性和更Python的方法是通過一個key
功能max
得到最大項目基於按鍵功能。在這種情況下,你可以根據當時預期的指數,以獲得最大的項目使用itemgetter(-1)
因爲max()
功能從列表(子列表)返回整個項目就可以通過索引獲得預期的項目:
>>> from operator import itemgetter
>>> max(lst, key=itemgetter(-1))[-1]
3
或多個功能:
>>> key_func = itemgetter(-1)
>>> key_func(max(lst, key=key_func))
3
請注意'zip(...)[ - 1]'只能在Python 2.x中工作,然後會比其他。 –
@tobias_k是剛剛修復。感謝評論! – Kasramvd
在列表上應用max
將返回最大列表,這不是您想要的。事實上,你可以使用列表理解來提取第三個元素,然後對理解適用max
:
>>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
>>> max([x[2] for x in lst])
3
'MAX(LIS,鍵=拉姆達L:M [-1])'或'MAX(LIS, key = lambda m:m [-1])[ - 1]' –
@AvinashRaj第一個將返回帶有最大值的列表,而不是最大值本身。 –
ya,第一個將返回最後一個元素的列表項 –