2010-01-30 94 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