在Python中,将一个字符串列表的列表转换为整数列表的列表

9
我正在从数据源中读取一些数字,这些数字表示我将用于TSP-esque问题的x和y坐标。我刚接触Python,所以我正在尽可能地利用列表。在阅读和解析数据之后,我得到了一个字符串列表的列表,看起来像这样:
[['565.0','575.0'],['1215.0','245.0'],...yougetthepoint...['1740.0','245.0']]
我宁愿处理整数点。如何将这些包含字符串的列表转换为包含整数的列表?它们似乎无法很好地进行类型转换,因为我收到了此错误:
ValueError:int()的无效文字(基数10):“565.0”
小数似乎会引起问题。

2
请不要称之为“强制转换”。Python 不使用“强制转换”。你的问题也不是关于 Java 或 C++ 中出现的“强制转换”。你的问题是关于将数据从字符串转换为浮点数的简单转换。 - S.Lott
@S. Lott,“将字符串转换为浮点数的简单数据转换”不是强制转换吗?撇开术语不谈,它做的事情是一样的。 - Chris
2
S. Lott是正确的。您正在从字符串对象创建浮点对象。在静态类型语言中,“强制转换”不会创建新对象,它们只是用不同类型重新解释相同的对象,如果删除原始对象,则转换也将被删除。在Python中,如果我定义一个字符串s =“123.4”,那么float(s)将创建一个完全独立于原始字符串的新对象。这就是为什么在Python中所做的事情与转换不同的原因。 - PaulMcG
1个回答

22
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]

什么破发生器只产生一个句点? - Ignacio Vazquez-Abrams
它们中没有一个只是句号。这就是奇怪的地方。它是在 TextMate 内部运行的。 - Chris
也许您正在对字符串列表而不是字符串列表的列表运行此操作,或者列表中的一个元素是字符串而其余元素是列表?在这种情况下,它将尝试单独转换每个字符,这将导致句点作为一个元素出现。 - Max Shawabkeh
从交互模式下运行良好。Que slique! - jathanism
是的,我不确定发生了什么,但我刚在另一个案例中测试了一下,这就是答案。谢谢Max S。 - Chris
太棒了!谢谢。 - chris_aych

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接