elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Obtener el número mayor con comprensión de listas en Python.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener el número mayor con comprensión de listas en Python.  (Leído 3,984 veces)
El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Obtener el número mayor con comprensión de listas en Python.
« en: 8 Octubre 2022, 22:06 pm »

Hola gente, ¿cómo están?, es demasiado lo que estoy renegando por eso los 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 tengo hecho...


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


Código
  1. lista = [10, 13, 454, 66, 44]
  2. el_mayor=0
  3. for a in lista:
  4.    if a > el_mayor:
  5.        el_mayor = a
  6.  
  7. print(el_mayor)


¿cómo inserto el condicional?

Código
  1. lista = [[10, 13, 454, 66, 44]]
  2. mayor = [lis for lis in lista --> if....]
  3.  
  4. print(mayor)
  5.  

Slds. Daniel ☕☕☕


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #1 en: 8 Octubre 2022, 23:56 pm »

Hola!

Puedes ordenar la lista e imprimir el ultimo valor (el mayor)

Código
  1. a = [10, 13, 454, 66, 44]
  2. a.sort()
  3. print('El mayor elemento es: {}'.format(a[-1]))
  4.  

Eso devuelve:
Citar
El mayor elemento es: 454

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #2 en: 9 Octubre 2022, 00:11 am »

Gracias por ocuparte, está muy bien y de esa manera se obtiene el máximo
y el mínimo, pero el caso es que estoy estudiando lista por comprensión y
por eso los consulte, gracias, seguiremos buscando...

Slds. Daniel ☕☕☕
En línea

RicRed

Desconectado Desconectado

Mensajes: 66



Ver Perfil WWW
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #3 en: 9 Octubre 2022, 00:21 am »

Con el metodo sort() se ordenan los numeros de un arreglo se llamaria? o lista?

Necesito aprender Python.

Saludos!
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.217


Superhacker (es broma xD )


Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #4 en: 9 Octubre 2022, 01:59 am »

No sé mucho del tema pero... ¿no sería algo así?
Código:
a = [[10, 13, 454, 66, 44]]
n = 0
el_mayor=(elemento 0 de a)
Repetir
    n++
    if (elemento n de a) > el_mayor:
        el_mayor = (elemento n de a)
mientras n<(elementos de a)-1
Es decir:
En tu lenguaje debería haber una manera de indicar un valor de la lista, pero no sé cómo será esa manera, eso lo tienes que averiguar estudiando ese lenguaje o preguntando en el foro.
También puedes hacer que el valor inicial de el_mayor sea 0, pero si debe ser un valor incluído en la lista entonces tiene más sentido que dicha variable inicie siendo uno, además de que se reduce el nro de elementos a recorrer luego con el "Repetir".

Luego con un "Repetir" vas comparando el_mayor con los diferentes elementos de tu lista, hasta que ya no queden más. En tu lenguaje debería haber una manera de obtener cuántos elementos tiene una lista, pero sino lo puedes hacer manualmente:
Código:
a = [[10, 13, 454, 66, 44]]
largo_de_a = 4
n = 0
el_mayor=(elemento 0 de a)
Repetir
    n++
    if (elemento n de a) > el_mayor:
        el_mayor = (elemento n de a)
mientras n<largo_de_a
Antes le puse -1 y ahora le puse 4 en vez de 5 porque, según he visto, el 1er elemento no es el 1, sino el 0, uno menos, y por lo tanto el último no será el 5 sino el 4. Tal vez en tu lenguaje sea distinto, tienes que experimentar.


Ahora haré algunas preguntas, si no es molestia, y me las responden si quieren.


¿Qué es "por comprensión"?


¿Qué hace esto
b = [max(p) for p in a]
?
Digo, obtiene el mayor valor de a, pero ¿qué es eso de p? Nunca entendí bien los for, pero esto menos, es como "el máximo de p para p en a"  :o o "el máximo será llamado p para p en a" ¿por qué no es algo como
b = max in a
o
b = max(a)
?
Ni siquiera tiene sentido llamarle p a eso, porque le estás llamando b, si quieres llamarle p le llamas así a la variable en vez de llamarle b, o creas otra variable, p, que tenga el valor de b. No está mal crear 2 variables en una misma línea de esta manera, pero parece lioso.+

Parece un intento de recorrer "a" variando p, pero ¿se hace así? ¿en español cual sería la traducción?


Código
  1. lista = [10, 13, 454, 66, 44]
  2. el_mayor=0
  3. for a in lista:
  4.    if a > el_mayor:
  5.        el_mayor = a
  6.  
  7. print(el_mayor)
¿Con ese for se recorre la lista como he puesto yo usando Repetir, n++ y demás? Parece una forma sencilla de hacerlo. ¿No te funciona? ¿te dice que hay un error de código o el_mayor no te da el resultado que esperas?


Código:
a = [10, 13, 454, 66, 44]
a.sort()
print('El mayor elemento es: {}'.format(a[-1]))
Estas preguntas pueden parecer toca cojones pero tengo curiosidad de entender cual es el motivo, sentido o la lógica de esos símbolos o palabras. ¿Por qué se escribe {} y .format(a[-1]? ¿cómo se traduciría al español o cual es la explicación? Es que en mi lenguaje sería algo como
print('El mayor elemento es: '+a[a.lengh-1]
que se traduciría como
Imprimir 'El mayor elemento es: ' y al lado imprimir el elemento ((largo de a)-1), es decir el último elemento de a.


Gracias.
« Última modificación: 9 Octubre 2022, 02:03 am por Tachikomaia » En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #5 en: 9 Octubre 2022, 16:05 pm »

El que busca encuentra y por fin lo encontré.-
Si lo envolves con corchetes, mayor pasa a ser una lista con un solo elemento,
si haces lo contrario mayor es del tipo int.-
Si invertís el mayor que encuentra el menor de la lista.-

Código
  1. import functools
  2. lista = [10, 13, 54, 661, 1, 44, 5, 222, 7]
  3.  
  4. mayor = [(functools.reduce(lambda a,b: a if (a > b) else b, lista))]
  5.  
  6. print(mayor)
  7.  
Bueno, parece ser todo, feliz domingo... 
Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #6 en: 10 Octubre 2022, 14:50 pm »

bueno veamos:

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

eso no es ni de cerca comprensión de listas, justamente existe una marcada diferencia entre las funciones lambda y la compresion de listas, consideralo una solución pero no es comprensión de listas!

además la estructura de la primera lista no coincide con la segunda:

1=
Código
  1. a = [[10, 13, 454, 66, 44]]
esto es una lista de listas

2=
Código
  1. lista = [10, 13, 54, 661, 1, 44, 5, 222, 7]
esto es simplemente una lista


2)
Código
  1. b = [max(p) for p in a]

esa es la estructura correcta de la compresion de listas.

un elemento a incluir , un bucle y un iterador

3) lo que me lleva a:
el segundo ejemplo además de ser una comprensión de listas y el primero no, es más legible, es más eficiente y no importa bibliotecas ¿qué necesidad de inventar la rueda?

4)el problema con lo que buscas hacer no son los condicionales, sino las asignaciones:
 
Código
  1. el_mayor = a
Creo que todavía no has entendido cuando aplica la comprensión de listas.
En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #7 en: 10 Octubre 2022, 17:40 pm »

Hola Rey, gracias por ocuparte.-
Conclusiones:
Esto decía el enunciado en el libro, dentro de comprensión de lista:
EJERCICIOS DE REPASO:
1. Escriba un programa en Python que acepte una lista de valores numéricos y obtenga
su valor máximo sin utilizar la función «built-in» max() (solución).
Entrada: [6, 3, 9, 2, 10, 31, 15, 7]
Salida: 31
¿Cómo querés que lo encare?, no llevaba ni 3 horas(literal) leyendo sobre
comprensión de lista y con esto te doy la razón en cuanto a tu última línea.-

Esto es lo que me ocurre si no lo hago con lista de listas...

Código
  1. a = [10, 13, 454, 66, 44]
  2.  
  3. b = [max(p) for p in a]
  4. print(b)
  5.  

Citar
[...]
b = [max(p) for p in a]
TypeError: 'int' object is not iterable

Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #8 en: 10 Octubre 2022, 19:01 pm »

hola Daniel:

1)No tiene sentido usar compresión de listas para ese planteo
2)Si te fijas lo esperado no es una lista
Citar
Salida: 31

sino salida sería: [31]
pero en el tiempo que llevo de python ya el planteo sería rídiculo.

3)
Citar
Esto es lo que me ocurre si no lo hago con lista de listas...

Código
  1. b = [max(p) for p in a]

pues está muy mal, la función max() recibe como argumento un iterable, no un entero que es lo que le estás pasando

Edito: No sigue el planteo por usar max(), pero te muestro como debería ser si querés usarla solo en una lista:

Código
  1. lista = [10, 13, 454, 66, 44]
  2. mayor=[x for x in lista if x ==max(lista)]
  3. print(mayor)
  4.  

Insistiendo en que esto es sumamente ilógico.

4)parece muy obvio pero la mejor solución es usar lo que pusiste de ejemplo inicial con for:

  
Código
  1. lista = [10, 13, 454, 66, 44]
  2.    el_mayor=0
  3.    for a in lista:
  4.        if a > el_mayor:
  5.            el_mayor = a
  6.  
  7.    print(el_mayor)

siempre obviando que es una tontería cuando:

Código
  1. lista = [10, 13, 454, 66, 44]
  2. print( max(lista))

si el libro hace esos planteos, te recomiendo que cambies de libro

5)compresión de listas o diccionarios es bárbaro para mí, pero para lo que realmente se hizo.



« Última modificación: 10 Octubre 2022, 19:32 pm por reymosquito » En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener el número mayor con comprensión de listas en Python.
« Respuesta #9 en: 10 Octubre 2022, 20:55 pm »

Hola Rey, jajajajaja con vos o aprendo a programar correctamente
o me agarro la frustración del siglo jajajajaj.-
Me está gustando esta manera y me hace comprender que en
programación no es todo copy/paste, gracias...

Slds. Daniel ☕☕☕
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Programita de Numero mayor y menor
Scripting
~ Ghost_Networks ~ 1 51,921 Último mensaje 8 Diciembre 2010, 18:39 pm
por ChicoMaravilla
Comprensión de lista en python
Scripting
Joe Fraddy 2 2,811 Último mensaje 18 Febrero 2015, 00:15 am
por Joe Fraddy
Invertir claves de un diccionario por comprensión en python.
Scripting
jam man 5 5,072 Último mensaje 10 Octubre 2015, 23:09 pm
por jam man
Obtener mayor número de una serie C++
Programación C/C++
Ingrid1997 1 1,866 Último mensaje 19 Octubre 2015, 05:52 am
por Seyro97
Python - Comprensión de listas vs map/filter (duda)
Programación General
tzinm 3 3,739 Último mensaje 2 Agosto 2021, 23:50 pm
por tzinm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines