<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body dir="auto"><div dir="auto">Impecable Ricardo, muchísimas gracias.</div><div dir="auto">Si bien me sirve increíblemente conocer las diferencias entre ambos y saber sus posibles aplicaciones, con: cadena.count() ya me es suficiente. Gracias</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><br></div><div id="composer_signature" dir="auto"><div style="font-size:85%;color:#575757" dir="auto">Enviado desde mi smartphone Samsung Galaxy.</div></div><div dir="auto"><br></div><div><br></div><div style="font-size:100%;color:#000000" dir="auto"><!-- originalMessage --><div>-------- Mensaje original --------</div><div>De: Ricardo Cárdenes <ricardo.cardenes@gmail.com> </div><div>Fecha: 16/7/20  18:37  (GMT-03:00) </div><div>A: La lista de python en castellano <python-es@python.org> </div><div>Asunto: Re: [Python-es] [Consulta] max() y min() </div><div><br></div></div><div dir="ltr">La principal diferencia está en cómo se cuentan las cosas. Esto:<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="color:rgb(80,0,80)"><font face="monospace">va = cadena.count('a')</font></span></div></blockquote><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">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.</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">Esto otro:</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="color:rgb(80,0,80)"><font face="monospace">cuentas = Counter(cadena.lower())</font></span></div></blockquote><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">recorre la cadena una única vez y te devuelve un diccionario con la cuenta de repeticiones <i>de cada uno de los caracteres distintos en la cadena</i>.</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)"><b>Pros y contras</b>:</span></div><div><br></div><div><span style="color:rgb(80,0,80)">El método <font face="monospace">count</font> 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 (<font face="monospace">Counter</font> cuenta elementos separados, únicamente).</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)"><font face="monospace">Counter</font> 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 <i>todo</i>.</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">Por tanto, escoger cual usar depende de lo que estés haciendo. </span><span style="color:rgb(80,0,80)">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 <font face="monospace">count</font> sea más rápido.</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">Si estás buscando muchos caracteres diferentes y, especialmente, si las cadenas son muy largas, entonces <font face="monospace">Counter</font> empieza a ser más conveniente y más rápido en general por la simple razón de que <i>sólo vas a necesitar recorrer la secuencia una vez</i>.<br></span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">La desventaja principal de <font face="monospace">Counter</font> es que, mientras <font face="monospace">count</font> te devuelve un simple entero, el objeto devuelto por <font face="monospace">Counter</font> 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.</span></div><div><span style="color:rgb(80,0,80)"><br></span></div><div><span style="color:rgb(80,0,80)">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 <font face="monospace">Counter</font> es que es mucho más ágil cuando necesitas contar muchas cosas diferentes y cuando no sabes a priori qué vas a necesitar contar.</span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 16, 2020 at 4:53 AM Lemarchand Barker <<a href="mailto:lemarchand8679@gmail.com">lemarchand8679@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Buenas, estoy viendo las opciones que me dieron con count().<br>
Ahora viene mi pregunta, cuál sería la diferencia entre lo que me recomendó:<br>
Juan José:<br>
va = cadena.count('a')<br>
<br>
Y lo que dijo:<br>
Ricardo:<br>
<br>
>>> from collections import Counter<br>
>>> cuentas = Counter(cadena.lower())<br>
>>> va = cuentas.get('a', 0)<br>
>>> ve = cuentas.get('e', 0)<br>
>>> va<br>
10<br>
>>> ve<br>
7<br>
<br>
Gracias, saludos<br>
<br>
El mié., 15 jul. 2020 a las 21:49, lemarchand8679<br>
(<<a href="mailto:lemarchand8679@gmail.com" target="_blank">lemarchand8679@gmail.com</a>>) escribió:<br>
><br>
> Mañana lo reviso también, muchas gracias<br>
><br>
><br>
><br>
> Enviado desde mi smartphone Samsung Galaxy.<br>
><br>
><br>
> -------- Mensaje original --------<br>
> De: Ricardo Cárdenes <<a href="mailto:ricardo.cardenes@gmail.com" target="_blank">ricardo.cardenes@gmail.com</a>><br>
> Fecha: 15/7/20 21:10 (GMT-03:00)<br>
> A: La lista de python en castellano <<a href="mailto:python-es@python.org" target="_blank">python-es@python.org</a>><br>
> Asunto: Re: [Python-es] [Consulta] max() y min()<br>
><br>
> Te voy a dar una mejor:<br>
><br>
> >>> from collections import Counter<br>
> >>> cuentas = Counter(cadena.lower())<br>
> >>> va = cuentas.get('a', 0)<br>
> >>> ve = cuentas.get('e', 0)<br>
> >>> va<br>
> 10<br>
> >>> ve<br>
> 7<br>
><br>
><br>
> Tras ejecutar la segunda línea, cuentas es un objeto con la misma interfaz que un diccionario.<br>
><br>
> Observa que pasé cadena.lower() a Counter, pensando que quieres todas las vocales, no sólo las minúsculas. Adáptalo según necesites.<br>
><br>
> On Wed, Jul 15, 2020 at 11:08 AM Lemarchand Barker <<a href="mailto:lemarchand8679@gmail.com" target="_blank">lemarchand8679@gmail.com</a>> wrote:<br>
>><br>
>> Lo voy a buscar y voy a ver.<br>
>> Muchas gracias<br>
>><br>
>> El mié., 15 jul. 2020 a las 18:03, Juan José Gómez Romera<br>
>> (<<a href="mailto:jjgomera@gmail.com" target="_blank">jjgomera@gmail.com</a>>) escribió:<br>
>> ><br>
>> > Hola, como uso te hace la función q necesitas, yo sin embargo recortaria código usando count:<br>
>> ><br>
>> > va = cadena.count('a')<br>
>> > ...<br>
>> ><br>
>> > Perdón por ser tan parco con el código, estoy desde móvil.<br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> > El mié., 15 jul. 2020 22:28, Lemarchand Barker <<a href="mailto:lemarchand8679@gmail.com" target="_blank">lemarchand8679@gmail.com</a>> escribió:<br>
>> >><br>
>> >> Hola, vengo con otra pregunta tonta.<br>
>> >> Estaba jugando con for, la típica de buscar máximos y mínimos, les<br>
>> >> dejo el código:<br>
>> >><br>
>> >> lista = []<br>
>> >><br>
>> >> cadena = "Esto es una cadena que contiene varias letras y muchas palabras"<br>
>> >><br>
>> >> vocales = ['a', 'e', 'i', 'o', 'u']<br>
>> >><br>
>> >> for x in cadena:<br>
>> >>     if x == 'a':<br>
>> >>         va = va + 1<br>
>> >>     elif x == 'e':<br>
>> >>         ve = ve + 1<br>
>> >>     elif x == 'i':<br>
>> >>         vi = vi + 1<br>
>> >>     elif x == 'o':<br>
>> >>         vo = vo + 1<br>
>> >>     elif x == 'u':<br>
>> >>         vu = vu + 1<br>
>> >><br>
>> >> lista.append(va)<br>
>> >> lista.append(ve)<br>
>> >> lista.append(vi)<br>
>> >> lista.append(vo)<br>
>> >> lista.append(vu)<br>
>> >><br>
>> >> total = va + ve + vi + vo + vu<br>
>> >><br>
>> >> max_item = max(lista, key=int)<br>
>> >> min_item = min(lista, key=int)<br>
>> >> print(f"Mayor: {max_item}")<br>
>> >> print(f"Menor: {min_item}")<br>
>> >><br>
>> >> Bueno mi consulta es la siguiente, está bien que haya utilizado max y<br>
>> >> min para tratar de buscar cuál es la vocal que más se repite y menos<br>
>> >> se repite? Pero el tema es el siguiente hay 2 vocales que se repiten<br>
>> >> solamente 2 veces, que son: i y o. Asumo que por el orden de los<br>
>> >> elementos en la lista el 2 que muestra se corresponde a la i.<br>
>> >> Bueno eso es todo, consultar si está bien utilizado el max y el min,<br>
>> >> saludos y gracias.<br>
>> >> _______________________________________________<br>
>> >> Python-es mailing list<br>
>> >> <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
>> >> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
>> ><br>
>> > _______________________________________________<br>
>> > Python-es mailing list<br>
>> > <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
>> > <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
>> _______________________________________________<br>
>> Python-es mailing list<br>
>> <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
>> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div>
</body></html>