2016-12-29 82 views
2

在Python的列表的字符串,我現在有像這樣給定元素的一個元素列表:轉換由逗號分隔成浮點數

x= ['1.1,1.2,1.6,1.7'] 

其中每個值僅由逗號分隔。我想使這個漂浮的列表,e.g像

x=[1.1, 1.2, 1.6, 1.7] 

我試過x=[float(i) for i in x]x=[float(i) for i in x.split()],但都返回錯誤。

+1

嘗試'X [0] .split( '')'? – martianwars

+0

'x'是一個列表,所以你需要通過'x [0]'來訪問它。你也應該給'split'調用提供分隔符,例如:'x [0]。分裂(',')' – UnholySheep

回答

0

斯普利特用逗號的字符串,並構建由每個項目float

[ float(item) for item in '1.1,2.3,5.1'.split(',') ] 
+0

OP有不同的輸入 – martianwars

5

x是一個字符串列表,以便訪問,你需要x[0]該字符串。該字符串以逗號分隔,因此您需要指定分隔符:split(',')。 (否則,split()試圖在空格分割字符串,as described in the docs。)

所以你最終獲得:

[float(i) for i in x[0].split(',')] 
0

確保您在一根繩子上應用的split()功能,而不是單一的元素列表。使用x[0]來確保。另外,將分隔符,傳遞給split()函數。

x = [float(i) for i in x[0].split(',')] 
0

x=[float(i) for i in x.split()]幾乎是正確的,除了兩件事。首先,你不會將任何東西傳遞給split()函數,所以它不會分割字符串中的任何內容(它只會分割你的字符串沒有的空白)。你想用逗號分割,所以你必須通過一個逗號,如x.split(',')

其次,看到xx= ['1.1,1.2,1.6,1.7']定義,它是一個包含單個字符串的列表,您必須引用數組中的字符串x[0]。最後的代碼應該是這樣的:

x = ['1.1,1.2,1.6,1.7'] 
floats = [float(i) for i in x[0].split(',')] 
print(floats) 

此輸出花車的列表:[1.1, 1.2, 1.6, 1.7]

如果x只是一個字符串,如x = '1.1,1.2,1.6,1.7',那麼只需在使用floats = [float(i) for i in x.split(',')]

+1

這些是列表,而不是數組:https://docs.python.org/2/library/array.html – UnholySheep

+0

@UnholySheep謝謝,我已經糾正了術語。 –

+0

僅供參考「不會拆分任何東西」是不正確的,請參閱[文檔](https://docs.python.org/3/library/stdtypes.html#str.split) - 沒有分隔符意味着它在空白分割。 – whrrgarbl

1

您可以使用map()這樣的:

list(map(float, x[0].split(','))) 

map()接受一個函數(float在我們的例子)和迭代(在我們的情況下,該列表:x[0].split(','))。 float函數被調用我們的名單x[0].split(',')

的每一個項目它相當於這個list comprehension

[float(item) for item in x[0].split(',')] 
+0

在Python3 +中,'map'不返回一個列表,它返回一個map對象,你將不得不將它轉換爲列表 –

+0

@IronFist Python 3在這個問題中沒有被標記! – ettanany

+0

既不是Python2,所以你必須概括你的答案,再加上你在答案中提到了Python3(與Python3文檔相關)。 –