内子列表项目的最大最佳方法我在格式多维列表:找到列表
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,第一个将返回最后一个元素的列表项 –