嗨我对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
有人能指出我的解决方案。
提前致谢
答案 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]