Foros Python

Versión completa: Obtener el número mayor con comprensión de listas en Python.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola Francisco, ¿cómo estás?, hola gente, es demasiado lo que estoy renegando
por ello te consulto, ¿es posible obtener el número mayor de una lista sin utilizar
el método MAX con comprensión de listas?.-
Dejo lo que llevo hecho...


Código:
#El mayor con comprensión de listas y método MAX
a = [[10, 13, 454, 66, 44]]
b = [max(p) for p in a]
print(b)

Código:
lista = [10, 13, 454, 66, 44]
el_mayor=0
for a in lista:
    if a > el_mayor:
        el_mayor = a

print(el_mayor)

¿cómo inserto el condicional?
Código:
lista = [[10, 13, 454, 66, 44]]
mayor = [lis for lis in lista --> if....]

print(mayor)

Slds. Daniel ☕☕☕
Hola, Daniel, ¿cómo estás?

No se puede, precisamente porque para calcular el mayor de una lista necesitás ir guardando en una variable el mayor valor encontrado hasta el momento, y crear una variable dentro de una comprensión de listas no es posible. De hecho, la lógica que usaste en el segundo código es la misma que usa la función incorporada max(): https://github.com/python/cpython/blob/0...le.c#L1779.

Saludos
Hola Francisco, estoy muy bien gracias a Dios.
Bueno, encontré esto que hace lo que buscaba y te dejo
una pregunta ¿a esto no se le puede llamar comprensión
de lista?.-

Código:
import functools
lista = [10, 13, 54, 661, 1, 44, 5, 222, 7]

mayor = [(functools.reduce(lambda a,b: a if (a > b) else b, lista))]

print(mayor)


En cuanto a lo que decís es totalmente cierto, si habré practicado
con esa bendita variable que realmente comprensión de listas no
lo permite.-


Slds. Daniel ☕☕☕
Hola, Daniel.

Es una forma interesante de calcular el mayor de una lista. No califica como comprensión de listas porque simplemente es una llamada a la función functools.reduce(), muy útil por cierto, para la cual también tenemos un artículo Big Grin: https://recursospython.com/guias-y-manuales/functools/.

Saludos