[Python-es] [Consulta] max() y min()
lemarchand8679
lemarchand8679 en gmail.com
Sab Jul 18 13:12:40 EDT 2020
Impecable Ricardo, muchísimas gracias.Si bien me sirve increíblemente conocer las diferencias entre ambos y saber sus posibles aplicaciones, con: cadena.count() ya me es suficiente. GraciasEnviado desde mi smartphone Samsung Galaxy.
-------- Mensaje original --------De: Ricardo Cárdenes <ricardo.cardenes en gmail.com> Fecha: 16/7/20 18:37 (GMT-03:00) A: La lista de python en castellano <python-es en python.org> Asunto: Re: [Python-es] [Consulta] max() y min() La principal diferencia está en cómo se cuentan las cosas. Esto:va = cadena.count('a')recorre la cadena entera buscando únicamente la letra "a". Y te devuelve la cuenta. Luego repites la operación con la "e" y hay que recorrer la cadena entera otra vez. Y luego repites con la "i" y hay que repetir toda la operación de nuevo. Así con cada letra que busques.Esto otro:cuentas = Counter(cadena.lower())recorre la cadena una única vez y te devuelve un diccionario con la cuenta de repeticiones de cada uno de los caracteres distintos en la cadena.Pros y contras:El método count estará optimizado para buscar subcadenas. Además, se concentra en contar una sola, así que realiza menos operaciones. Sería el ideal para buscar una única letra. Es la única opción que tienes si quieres buscar subcadenas de más de una letra (Counter cuenta elementos separados, únicamente).Counter es más genérico: sirve no sólo para cadenas sino para cualquier tipo de secuencia (listas, tuplas, ...) Su gran ventaja es que sólo lo ejecutas una vez y ya has contado todo.Por tanto, escoger cual usar depende de lo que estés haciendo. Si vas a buscar más de un carácter, a tamaños de cadena que no sean gigantescos, probablemente no vaya a haber una gran diferencia y es posible que count sea más rápido.Si estás buscando muchos caracteres diferentes y, especialmente, si las cadenas son muy largas, entonces Counter empieza a ser más conveniente y más rápido en general por la simple razón de que sólo vas a necesitar recorrer la secuencia una vez.La desventaja principal de Counter es que, mientras count te devuelve un simple entero, el objeto devuelto por Counter ocupa memoria proporcionalmente al número de elementos distintos que haya en la secuencia. Si esto va a ser un problema o no depende de tus datos y de la cantidad de memoria de que dispongas.Pero yo no me centraría en asuntos de rendimiento en este momento, principalmente cuando parece que aún no dominas el lenguaje. Quitando eso, la ventaja principal de Counter es que es mucho más ágil cuando necesitas contar muchas cosas diferentes y cuando no sabes a priori qué vas a necesitar contar.On Thu, Jul 16, 2020 at 4:53 AM Lemarchand Barker <lemarchand8679 en gmail.com> wrote:Buenas, estoy viendo las opciones que me dieron con count().
Ahora viene mi pregunta, cuál sería la diferencia entre lo que me recomendó:
Juan José:
va = cadena.count('a')
Y lo que dijo:
Ricardo:
>>> from collections import Counter
>>> cuentas = Counter(cadena.lower())
>>> va = cuentas.get('a', 0)
>>> ve = cuentas.get('e', 0)
>>> va
10
>>> ve
7
Gracias, saludos
El mié., 15 jul. 2020 a las 21:49, lemarchand8679
(<lemarchand8679 en gmail.com>) escribió:
>
> Mañana lo reviso también, muchas gracias
>
>
>
> Enviado desde mi smartphone Samsung Galaxy.
>
>
> -------- Mensaje original --------
> De: Ricardo Cárdenes <ricardo.cardenes en gmail.com>
> Fecha: 15/7/20 21:10 (GMT-03:00)
> A: La lista de python en castellano <python-es en python.org>
> Asunto: Re: [Python-es] [Consulta] max() y min()
>
> Te voy a dar una mejor:
>
> >>> from collections import Counter
> >>> cuentas = Counter(cadena.lower())
> >>> va = cuentas.get('a', 0)
> >>> ve = cuentas.get('e', 0)
> >>> va
> 10
> >>> ve
> 7
>
>
> Tras ejecutar la segunda línea, cuentas es un objeto con la misma interfaz que un diccionario.
>
> Observa que pasé cadena.lower() a Counter, pensando que quieres todas las vocales, no sólo las minúsculas. Adáptalo según necesites.
>
> On Wed, Jul 15, 2020 at 11:08 AM Lemarchand Barker <lemarchand8679 en gmail.com> wrote:
>>
>> Lo voy a buscar y voy a ver.
>> Muchas gracias
>>
>> El mié., 15 jul. 2020 a las 18:03, Juan José Gómez Romera
>> (<jjgomera en gmail.com>) escribió:
>> >
>> > Hola, como uso te hace la función q necesitas, yo sin embargo recortaria código usando count:
>> >
>> > va = cadena.count('a')
>> > ...
>> >
>> > Perdón por ser tan parco con el código, estoy desde móvil.
>> >
>> >
>> >
>> >
>> > El mié., 15 jul. 2020 22:28, Lemarchand Barker <lemarchand8679 en gmail.com> escribió:
>> >>
>> >> Hola, vengo con otra pregunta tonta.
>> >> Estaba jugando con for, la típica de buscar máximos y mínimos, les
>> >> dejo el código:
>> >>
>> >> lista = []
>> >>
>> >> cadena = "Esto es una cadena que contiene varias letras y muchas palabras"
>> >>
>> >> vocales = ['a', 'e', 'i', 'o', 'u']
>> >>
>> >> for x in cadena:
>> >> if x == 'a':
>> >> va = va + 1
>> >> elif x == 'e':
>> >> ve = ve + 1
>> >> elif x == 'i':
>> >> vi = vi + 1
>> >> elif x == 'o':
>> >> vo = vo + 1
>> >> elif x == 'u':
>> >> vu = vu + 1
>> >>
>> >> lista.append(va)
>> >> lista.append(ve)
>> >> lista.append(vi)
>> >> lista.append(vo)
>> >> lista.append(vu)
>> >>
>> >> total = va + ve + vi + vo + vu
>> >>
>> >> max_item = max(lista, key=int)
>> >> min_item = min(lista, key=int)
>> >> print(f"Mayor: {max_item}")
>> >> print(f"Menor: {min_item}")
>> >>
>> >> Bueno mi consulta es la siguiente, está bien que haya utilizado max y
>> >> min para tratar de buscar cuál es la vocal que más se repite y menos
>> >> se repite? Pero el tema es el siguiente hay 2 vocales que se repiten
>> >> solamente 2 veces, que son: i y o. Asumo que por el orden de los
>> >> elementos en la lista el 2 que muestra se corresponde a la i.
>> >> Bueno eso es todo, consultar si está bien utilizado el max y el min,
>> >> saludos y gracias.
>> >> _______________________________________________
>> >> Python-es mailing list
>> >> Python-es en python.org
>> >> https://mail.python.org/mailman/listinfo/python-es
>> >
>> > _______________________________________________
>> > Python-es mailing list
>> > Python-es en python.org
>> > https://mail.python.org/mailman/listinfo/python-es
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200718/8c2f3839/attachment.html>
Más información sobre la lista de distribución Python-es