从包含列表的列表中获取最大值?

Fea*_*der 11 python function list max python-2.7

所以我有一个包含几个列表的列表,它们首先有三个字符串,然后是一个浮点数,如:

resultlist = [["1", "1", "a", 8.3931], ["1", "2", "b", 6.3231], ["2", "1", "c", 9.1931]]
Run Code Online (Sandbox Code Playgroud)

如何创建一个返回最大值的函数(这里是9.1931)?我试过了

def MaxValue():
    max_value = max(resultlist)
    return max_value
Run Code Online (Sandbox Code Playgroud)

但这只是给我一个清单.

编辑:另外,我可以通过任何方式得到值来自哪里的索引?喜欢,从哪个子列表?

小智 10

或许比pythonic方式更具功能性:

>>> max(map(lambda x: x[3], resultlist))
9.1931
Run Code Online (Sandbox Code Playgroud)

它首先将结果列表的每个元素映射到数字值,然后找到最大值.

中间数组是:

>>> map(lambda x: x[3], resultlist)
[8.3931000000000004, 6.3231000000000002, 9.1930999999999994]
Run Code Online (Sandbox Code Playgroud)


Gui*_*ijk 10

Numpy 有助于数字嵌套列表。尝试这个:

resultlist = [[3, 2, 4, 4], [1, 6, 7, -6], [5, 4, 3, 2]]
max(resultlist)  # yields [5, 4, 3, 2] because 5 is the max in: 3, 1, 5
np.max(resultlist)  # yields 7 because it's the absolute max
Run Code Online (Sandbox Code Playgroud)

max()返回第一个元素是所有列表第一个元素的最大值的列表,同时np.max()返回所有嵌套列表中的最大值。


wfl*_*nny 8

循环遍历外部列表并选择每个子列表的最后一个元素:

def max_value(inputlist):
    return max([sublist[-1] for sublist in inputlist])

print max_value(resultlist)
# 9.1931
Run Code Online (Sandbox Code Playgroud)

如果将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不通过重用变量名来混淆命名空间),这也是最好的.