2010-01-30 96 views
6

我正在读取一些数据源中的一些数字,这些数字代表了我将用于解决TSP类问题的xy坐标。我是python新手,所以我试图充分利用列表。在阅读和解析数据后,我剩下一个如下所示的字符串列表:从字符串列表中铸造列表到Python中的整数列表

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

我宁愿处理整数点。我如何将这些包含字符串的列表转换为包含整数的列表?他们似乎没有很好地铸造,因为我得到这个错误:

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

小数似乎是导致问题。

+1

请不要称之为“铸造”。 Python不使用“投射”。你的问题不是关于“铸造”,因为它出现在Java或C++中。你的问题是关于从字符串到浮点数据的简单转换。 – 2010-01-30 14:05:40

+0

@S。洛特如何“从字符串到浮点数据的简单转换”不是铸造?抛开术语,它是做同样的事情。 – Chris 2010-01-30 15:17:53

+1

S.洛特是正确的。您正在创建一个字符串对象的浮动对象。静态类型语言中的“Casting”不会创建新对象,它们只是用不同类型重新解释同一对象,并且如果原始对象被删除,那么该对象也会被删除。在Python中,如果我定义了一个字符串s =“123.4”,那么float(s)完全创建一个新对象,与原始字符串无关。这就是为什么你在Python中做的与演员不一样的原因。 – PaulMcG 2010-01-31 01:03:24

回答

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:float()的无效文字。 < - 嗯.. – Chris 2010-01-30 02:41:15

+0

破碎的发电机只产生一段时间? – 2010-01-30 02:50:20

+0

没有一个只是时期。这就是好奇心。它从textmate内部运行。 – Chris 2010-01-30 02:59:25