在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()]
,但都返回錯誤。
在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()]
,但都返回錯誤。
斯普利特用逗號的字符串,並構建由每個項目float
:
[ float(item) for item in '1.1,2.3,5.1'.split(',') ]
OP有不同的輸入 – martianwars
x
是一個字符串列表,以便訪問,你需要x[0]
該字符串。該字符串以逗號分隔,因此您需要指定分隔符:split(',')
。 (否則,split()
試圖在空格分割字符串,as described in the docs。)
所以你最終獲得:
[float(i) for i in x[0].split(',')]
確保您在一根繩子上應用的split()
功能,而不是單一的元素列表。使用x[0]
來確保。另外,將分隔符,
傳遞給split()
函數。
x = [float(i) for i in x[0].split(',')]
x=[float(i) for i in x.split()]
幾乎是正確的,除了兩件事。首先,你不會將任何東西傳遞給split()
函數,所以它不會分割字符串中的任何內容(它只會分割你的字符串沒有的空白)。你想用逗號分割,所以你必須通過一個逗號,如x.split(',')
。
其次,看到x
由x= ['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(',')]
。
這些是列表,而不是數組:https://docs.python.org/2/library/array.html – UnholySheep
@UnholySheep謝謝,我已經糾正了術語。 –
僅供參考「不會拆分任何東西」是不正確的,請參閱[文檔](https://docs.python.org/3/library/stdtypes.html#str.split) - 沒有分隔符意味着它在空白分割。 – whrrgarbl
您可以使用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(',')]
在Python3 +中,'map'不返回一個列表,它返回一個map對象,你將不得不將它轉換爲列表 –
@IronFist Python 3在這個問題中沒有被標記! – ettanany
既不是Python2,所以你必須概括你的答案,再加上你在答案中提到了Python3(與Python3文檔相關)。 –
嘗試'X [0] .split( '')'? – martianwars
'x'是一個列表,所以你需要通過'x [0]'來訪問它。你也應該給'split'調用提供分隔符,例如:'x [0]。分裂(',')' – UnholySheep