2010-01-30 15 views
6

Estoy leyendo algunos números de una fuente de datos que representan las coordenadas xy que voy a utilizar para un problema TSP-esque. Soy nuevo en Python, así que estoy tratando de sacar el máximo provecho de las listas. Después de leer y analizar a través de los datos, me quedo con una lista de listas de cadenas que tiene este aspecto:Casting de la lista de cadenas de listas de listas de ints en python

[['565.0', '575.0'], ['1215.0', '245.0'], ...yougetthepoint... ['1740.0', '245.0']]

que en lugar se ocupan de puntos enteros. ¿Cómo puedo transformar estas listas que contienen cadenas en listas que contienen enter? No parecen estar emitiendo muy bien, ya que aparece este error:

ValueError: invalid literal for int() with base 10: '565.0'

El decimal parece estar causando problemas.

+1

No llame a este "casting". Python no usa "casting". Su pregunta no es sobre "casting" como aparece en Java o C++, tampoco. Su pregunta es acerca de la simple conversión de datos de cadena a flotante. –

+0

@S. ¿Cómo es que "la conversión simple de datos de cadena a flotante" no está emitiendo? Dejando a un lado la terminología, está haciendo lo mismo. – Chris

+1

S. Lott está en lo cierto. Está creando un objeto flotante a partir de un objeto de cadena. "Casting" en lenguajes tipados estáticos no crea un nuevo objeto, solo reinterpreta el mismo objeto con un tipo diferente y si el objeto original se elimina, también lo es el molde. En Python, si defino una cadena s = "123.4", float (s) crea un nuevo objeto por completo, independientemente de la cadena original. Es por eso que lo que haces en Python no es lo mismo que un elenco. – PaulMcG

Respuesta

10
x = [['565.0', '575.0'], ['1215.0', '245.0'], ['1740.0', '245.0']] 
x = [[int(float(j)) for j in i] for i in x] 
+0

ValueError: literal no válido para float():. <- hmm .. – Chris

+0

¿Qué generador roto produjo solo un período? –

+0

Ninguno de ellos son solo períodos. Eso es lo que es curioso Se ejecuta desde el interior del compañero de texto. – Chris

Cuestiones relacionadas