将数组中的元素转换为python中的浮点数

时间:2014-10-01 07:07:22

标签: python arrays

嗨我对python很新,我想做的很简单,但我似乎无法绕过它。

我有一个简单的数组,如下所示:

A1 = [('1.000000', '4.000000'), ('2.000000', '5.000000'), ('3.000000', '6.000000'), ('1.000000', '4.000000'), ('2.000000', '5.000000'), ('3.000000', '6.000000')]

我想将数组中的所有元素更改为浮点数,以便我可以对它们进行计算(例如求和等)。最终结果应如下所示:

A2 = [(1.000000, 4.000000), (2.000000, 5.000000), (3.000000, 6.000000), (1.000000, 4.000000), (2.000000, 5.000000), (3.000000, 6.000000)]

我尝试了以下内容:

A2 = [float(i) for i in A1]

然而我收到错误:

TypeError: float() argument must be a string or a number

有人能指出我的解决方案。

提前致谢

3 个答案:

答案 0 :(得分:2)

这是一个非常简单的方法:

>>> [map(float, x) for x in A1]
[[1.0, 4.0], [2.0, 5.0], [3.0, 6.0], [1.0, 4.0], [2.0, 5.0], [3.0, 6.0]]

我喜欢它,因为它很短(有些人会说简洁),而且因为使用map()使得它不是硬编码或明确每个x的预期格式,它只是说它假设A1是一个序列列表。

不知道如何将性能与其他解决方案进行比较(例如下面更明确的[(float(x), float(y) for (x, y) in A1])。

答案 1 :(得分:2)

A1的每个元素都是元组('1.000000', '4.000000')。您将必须转换元组的每个项目:

A2 = [(float(i), float(j)) for (i, j) in A1]

答案 2 :(得分:1)

你也需要迭代内部元组。

A2 = [tuple(float(s) for s in i) for i in A1]