2010-08-26 10 views
7

Tengo una lista de las fracciones, tales como:lista Convert de fracciones de flota en Python

data = ['24/221 ', '25/221 ', '24/221 ', '25/221 ', '25/221 ', '30/221 ', '31/221 ', '31/221 ', '31/221 ', '31/221 ', '30/221 ', '30/221 ', '33/221 '] 

¿Cómo hago para convertir éstos a los flotadores, por ejemplo,

data = ['0.10 ', '0.11 ', '0.10 ', '0.11 ', '0.13 ', '0.14 ', '0.14 ', '0.14 ', '0.14 ', '0.14 ', '0.13 ', '0.13 ', '0.15 '] 

El módulo Fraction parece convertir sólo a Fractions (no de) y float([x]) requiere una cadena o un entero.

+0

¿quieres TRUNCAR comió o redondeó después del segundo decimal? –

Respuesta

11
import fractions 
data = [float(fractions.Fraction(x)) for x in data] 

o para que coincida con su ejemplo exactamente (datos termina con cadenas):

import fractions 
data = [str(float(fractions.Fraction(x))) for x in data] 
0
def split_divide(elem): 
    (a,b) = [float(i) for i in elem.split('/')] 
    return a/b 

map(split_divide, ['1/2','2/3']) 

[0,5, 0.66666666666666663]

1
import fractions 
data = [str(round(float(fractions.Fraction(x)), 2)) for x in data] 
0
data = [ x.split('/') for x in data ] 
data = [ float(x[0])/float(x[1]) for x in data ] 
0

anidados listas por comprensión se obtener su respuesta sin importar módulos adicionales (fracciones es solo en Python 2.6+).

>>> ['%.2f' % (float(numerator)/float(denomator)) for numerator, denomator in [element.split('/') for element in data]] 
['0.11', '0.11', '0.11', '0.11', '0.11', '0.14', '0.14', '0.14', '0.14', '0.14', '0.14', '0.14', '0.15'] 
+1

Fracciones está en 2.6. – carl

+0

¡Uy! Tienes razón. Mi error. –

1

Con el módulo de fracción es agradable y ordenado, pero es bastante pesado (más lento) en comparación con sencillo dividida cuerda o partición

Esta lista por comprensión crea los flotadores como la respuesta con más votos que hace

[(n/d) for n,d in (map(float, i.split("/")) for i in data)] 

Si desea que las dos cadenas de caracteres decimales

["%.2f"%(n/d) for n,d in (map(float, i.split("/")) for i in data)]