Here is the answer just in case you get a list of the list where the number is not always in third position:
from itertools import chain max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist)))
What's happening? itertools.chain aligns the list of lists, filter then selects all numerical values whose maximum value is determined using the max function. The advantage here is that it also works for arbitrary list lists, where a numerical value can be found anywhere in the list.
In your example:
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
Another common example:
myList = [[23, 34, 'a'],['b'],['t', 100]] max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(myList))) #prints 100
EDIT:
If you also want to get the index of the maximum value, you can do the following (using the @Padraic Cunningham approach):
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)
This approach assumes that the list has exactly one numeric value!
Another example using a list in which a numeric value is in an arbitrary position:
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)