繁体   English   中英

查找列表中子列表项最大值的最佳方法

[英]Optimal method to find the max of sublist items within list

我有一个格式的多维列表:

list = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]

如何获取所有子列表的第三个值的最大值。 在伪代码中:

max(list[0][2], list[1][2], list[2][2])

我知道这可以通过迭代列表并将第三个值提取到一个新列表,然后简单地执行max(list)来完成,但我想知道是否可以使用lambda或list comprehension来完成这个操作?

只需将max与生成器表达式一起使用:

>>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
>>> max(l[2] for l in lst)
3

另外,不要为变量list命名,而是要隐藏类型。

使用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

另一种替代方案和更加pythonic方法是将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 

在列表中应用max将返回最大列表,这不是您想要的。 您确实可以使用列表推导来提取第三个元素,然后对该理解应用max

>>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]]
>>> max([x[2] for x in lst])
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM