Re: [Python-es] [Consulta] max() y min()

2020-07-16 Por tema Ricardo Cárdenes
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 
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
> () escribió:
> >
> > Mañana lo reviso también, muchas gracias
> >
> >
> >
> > Enviado desde mi smartphone Samsung Galaxy.
> >
> >
> >  Mensaje original 
> > De: Ricardo Cárdenes 
> > Fecha: 15/7/20 21:10 (GMT-03:00)
> > A: La lista de python en castellano 
> > 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 <
> lemarchand8...@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
> >> () 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 <
> lemarchand8...@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: 

Re: [Python-es] [Consulta] max() y min()

2020-07-16 Por tema lemarchand8679
Muchas gracias Sebastián. Tomo notaEnviado desde mi smartphone Samsung Galaxy.
 Mensaje original De: Sebastián Arancibia  
Fecha: 16/7/20  15:18  (GMT-03:00) A: La lista de python en castellano 
 Asunto: Re: [Python-es] [Consulta] max() y min() El 
ejemplo de Juan José usa un método de la clase string (

https://www.w3schools.com/python/python_ref_string.asp  ) mientras que el de 
Ricardo importa la clase Counter del módulo collections. Si no me equivoco, la 
clase Counter te permite contar cualquier tipo de objeto, a diferencia del 
count() de la clase string que solo te cuenta un determinado caracter o string 
dentro de una cadena. Esa es la diferencia.On Thu, Jul 16, 2020 at 10:53 AM 
Lemarchand Barker  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
() escribió:
>
> Mañana lo reviso también, muchas gracias
>
>
>
> Enviado desde mi smartphone Samsung Galaxy.
>
>
>  Mensaje original 
> De: Ricardo Cárdenes 
> Fecha: 15/7/20 21:10 (GMT-03:00)
> A: La lista de python en castellano 
> 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  
> 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
>> () 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  
>> > 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@python.org
>> >> https://mail.python.org/mailman/listinfo/python-es
>> >
>> > ___
>> > Python-es mailing list
>> > Python-es@python.org
>> > https://mail.python.org/mailman/listinfo/python-es
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] max() y min()

2020-07-16 Por tema Sebastián Arancibia
El ejemplo de Juan José usa un método de la clase string (
https://www.w3schools.com/python/python_ref_string.asp  ) mientras que el
de Ricardo importa la clase Counter del módulo collections. Si no me
equivoco, la clase Counter te permite contar cualquier tipo de objeto, a
diferencia del count() de la clase string que solo te cuenta un determinado
caracter o string dentro de una cadena. Esa es la diferencia.

On Thu, Jul 16, 2020 at 10:53 AM Lemarchand Barker 
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
> () escribió:
> >
> > Mañana lo reviso también, muchas gracias
> >
> >
> >
> > Enviado desde mi smartphone Samsung Galaxy.
> >
> >
> >  Mensaje original 
> > De: Ricardo Cárdenes 
> > Fecha: 15/7/20 21:10 (GMT-03:00)
> > A: La lista de python en castellano 
> > 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 <
> lemarchand8...@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
> >> () 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 <
> lemarchand8...@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@python.org
> >> >> https://mail.python.org/mailman/listinfo/python-es
> >> >
> >> > ___
> >> > Python-es mailing list
> >> > Python-es@python.org
> >> > https://mail.python.org/mailman/listinfo/python-es
> >> ___
> >> Python-es mailing list
> >> Python-es@python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] max() y min()

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