Método óptimo para encontrar el máximo de elementos de lista secundaria en la lista

Tengo una lista multidimensional en el formato:

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

¿Cómo obtengo el valor máximo del tercer valor de todas las sublistas? En pseudo código:

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

Sé que esto se puede hacer iterando sobre la lista y extrayendo el tercer valor en una nueva lista, luego simplemente ejecutando max(list) , pero me pregunto si esto se puede hacer usando un lambda o una lista de comprensión.

Solo usa max con una expresión generadora:

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

Además, no nombre su list variables, está siguiendo el tipo.

Use la función zip para obtener la lista de columnas y luego use una indexación simple para obtener la columna esperada:

 >>> lst = [[1, 2, 3], [2, 4, 2], [0, 1, 1]] >>> >>> max(zip(*lst)[-1]) # in python 3.x max(list(zip(*lst))[-1]) 3 

Otra alternativa y un enfoque más python es pasar una función key a max para obtener el artículo máximo basado en la función clave. En este caso, puede usar itemgetter(-1) para obtener el artículo máximo basado en el índice deseado y luego, ya que la función max() devuelve el artículo completo de su lista (sub-lista), puede obtener el artículo esperado indexando:

 >>> from operator import itemgetter >>> max(lst, key=itemgetter(-1))[-1] 3 

O más funcional:

 >>> key_func = itemgetter(-1) >>> key_func(max(lst, key=key_func)) 3 

la aplicación de max en la lista devolverá la lista máxima, que no es lo que desea. De hecho, podría usar una lista de comprensión para extraer el tercer elemento, y luego aplicar max en esa comprensión:

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