[Python-es] Cómo convertir una lista flotante a una lista de enteros.

Juan Pablo Fernandez Gutierrez jpfernandez en udem.edu.co
Jue Feb 19 14:31:09 CET 2015


Gracias Chema.

Por ahora, lo estoy usando una vez y es por el hecho de que creo una lista con x=range(n), pero esta es un array y al usarlo como índice me genera error.

Existe un comando que crea una lista de 0 a n-1 similar al range del numpy?

Juan Pablo Fernández Gutiérrez

De: Python-es [mailto:python-es-bounces+jpfernandez=udem.edu.co en python.org] En nombre de Chema Cortes
Enviado el: jueves, 19 de febrero de 2015 07:41 a.m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Cómo convertir una lista flotante a una lista de enteros.


El 18 de febrero de 2015, 22:19, Luis Fernando Barrera <luisfernando en informind.com<mailto:luisfernando en informind.com>> escribió:
A mí me gusta usar siempre las comprensiones, así ya sé que el resultado es una lista.

Y map es muy rápido y legible para aplicar funciones sobre un iterable.


Aunque "map" es un método utilizado en programación funcional, en python es simplemente una función. Al contrario de otros lenguajes, es muy ilegible cuando tienes que encadenar varios maps y filtros seguidos. En estos casos, la alternativa de usar compresiones de listas es más recomendable.

En el caso que nos ocupa, se puede conseguir una versión más elegante con el uso del iterador "enumerate":

items = (D[i,int(u)] for (i,u) in enumerate(x))
Sería lo recomendado si sólo la vas a usar una vez después. Si prefieres lista o set bastaría con cambiar los paréntesis:
lista = [...]
conjunto = {...}

También puedes incluir esta expresión directamente en algunos cálculos sencillos:
suma = sum(...)
maximo = max(...)
minimo = min(...)
O cálculos más complejos encadenando iteradores:
numeros_positivos = sum(1 for z in ( D[i,int(u)] for (i,u) in enumerate(x) ) if z > 0)

O mezclando listas con "zip":
zip( (...), (...), (...) )
y posteriormente operar para, por ejemplo, sumar sus elementos:

s = [sum(z) for z in zip( (...),(...),(...)) ]




El 18 de febrero de 2015, 1:42 p. m., lasizoillo<lasizoillo en gmail.com<mailto:lasizoillo en gmail.com>> escribió:

Esto es un poco off-topic y solo por curiosidad. ¿Por qué esa mezcla de estilos?

El día 18 de febrero de 2015, 18:11, Luis Fernando Barrera
<luisfernando en informind.com<mailto:luisfernando en informind.com>> escribió:
> nueva_lista = [map(int, x) for x in lista]

nueva_lista = [[int(y) for y in x] for x in lista]
nueva_lista = map(lambda x: map(int, x), lista)

Paradójicamente la mezcla de estilos es más compacta y tal vez más
legible. Estoy confuso :-O

Un abrazo,

Javi
_______________________________________________
Python-es mailing list
Python-es en python.org<mailto:Python-es en python.org>
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


_______________________________________________
Python-es mailing list
Python-es en python.org<mailto:Python-es en python.org>
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



--
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es






[Universidad de Medellín]

La información contenida en este correo electrónico, está diseñada para uso exclusivo de la persona o entidad a la que va dirigida, y puede contener datos que sean confidenciales. Si el lector de este mensaje no es el destinatario previsto, empleado o agente responsable, se le notifica que cualquier divulgación, distribución o copia de esta comunicación está estrictamente prohibida. Si usted ha recibido este mensaje por error, por favor notifíquelo al correo del cual fue enviado.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150219/b1eafd60/attachment.html>


Más información sobre la lista de distribución Python-es