2016-12-29 33 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文档相关)。 –