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
<[email protected]> Fecha: 16/7/20 18:37 (GMT-03:00) A: La lista de
python en castellano <[email protected]> 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
<[email protected]> 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
(<[email protected]>) escribió:
>
> Mañana lo reviso también, muchas gracias
>
>
>
> Enviado desde mi smartphone Samsung Galaxy.
>
>
> -------- Mensaje original --------
> De: Ricardo Cárdenes <[email protected]>
> Fecha: 15/7/20 21:10 (GMT-03:00)
> A: La lista de python en castellano <[email protected]>
> 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 <[email protected]>
> 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
>> (<[email protected]>) 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 <[email protected]>
>> > 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
>> >> [email protected]
>> >> https://mail.python.org/mailman/listinfo/python-es
>> >
>> > _______________________________________________
>> > Python-es mailing list
>> > [email protected]
>> > https://mail.python.org/mailman/listinfo/python-es
>> _______________________________________________
>> Python-es mailing list
>> [email protected]
>> https://mail.python.org/mailman/listinfo/python-es
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es