这是一个答案,以防万一你得到一个数字并不总是在第三位的列表:
from itertools import chain
max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist)))
发生了什么事? itertools.chain 展平列表列表,filter 然后选择所有数值,然后使用 max 函数确定最大值。
这里的优点是它也适用于任意列表列表,其中数值可以在列表中的任何位置找到。
你的例子:
resultlist = [['1', '1', 'a', 8.3931], ['1', '2', 'b', 6.3231], ['2', '1', 'c', 9.1931]]
max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist)))
#prints 9.1931
一个更一般的例子:
myList = [[23, 34, 'a'],['b'],['t', 100]]
max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(myList)))
#prints 100
编辑:
如果您还想获取最大值的索引,您可以执行以下操作(使用@Padraic Cunningham 方法):
from itertools import chain
import operator
resultlist = [['1', '1', 'a', 8.3931], ['1', '2', 'b', 6.3231], ['2', '1', 'c', 9.1931]]
l = filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist))
# l: [8.3931, 6.3231, 9.1931]
max(enumerate(l), key = operator.itemgetter(1))
#(2, 9.1931)
这种方法假设每个列表只有一个数值!
另一个使用列表的示例,其中数值位于任意位置:
from itertools import chain
import operator
myList = [[23, '34', 'a'],['b', 1000],['t', 'xyz', 100]]
l=filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(myList))
max(enumerate(l), key = operator.itemgetter(1))
#prints (1, 1000)