2016-09-01 51 views
-1

我有一个整数元组。实际上,除了英文以外的所有语言都表示为1,2,而英文使用1.2的十进制数。这种“元组”被从文件中读取,并加入带有一系列整数沿着阵列,所以数据类型由Python的自动分配,我有没有对其影响...将整数元组转换为浮点数

whatever[7] = 1,2 

有一些巧妙的方式将其转换为1.2?我找到了,但他们只对字符串的工作,但是当我将它转换为字符串,它是parenthesised并用空格分开,

str(whatever[7]) 
'(1, 2)' 

...这样的任务被扩大到摆脱也“(” “)”和空间,这当然是可行的:

str(str(str(str(whatever[7]).replace(",",".")).replace(" ","")).replace("(", "")).replace(")","") 

...但它并不完全打我与它的美丽和优雅。

+1

您是否像导入Python代码一样导入数据文件?如果是这样,为什么? –

+0

我正在读取一个csv文件,然后通过“/ n”和随后的“;”解析它,这留下了数组(或列表),其中唯一的最后一个元素可以是元组。我的意思是我没有在开头定义变量,例如* whatever = str(1,2)*,我可以选择数据类型。 Python这样做和Python决定,这是一个整数的元组。 – Eleshar

+0

但最后一个元素不会是元组;它将是一个字符串。你对这个字符串做了什么来结束一个元组?使用'eval'?这就是你想改变的代码。 –

回答

1

你的意思是像

print "%s.%s"%whatever[7] 

如果你想将它转换为浮动首先创建的字符串表示'1.2',然后喂养到

float("%s.%s"%whatever[7]) 
+0

哈,聪明!我永远不会想到它将其格式化。 – Eleshar

1

您可以将元组转换为浮动float

要做到这一点,你可以使用mapint s到str S,加入他们的'.'和饲料,为float()

例如:

>>> t = 1, 2 
>>> f = float(".".join(map(str,t))) 
>>> print(f) 
1.2 
-1

这个怎么样?

>>> whatever = 1,2 
>>> float('.'.join(str(num) for num in whatever)) 
1.2 

像吉姆的答案,它创建的'1.2'一个str表示,但使用的地图,它会创建一个生成器对象(基本上是什么list解析后面),这在whatever字符串每个项目转换,即join方法可以迭代。最后,该字符串被转换为浮点型对象

0

以下格式将适用于您的示例。

whatever[7] = 1, 2 
new_num = float("{}.{}".format(whatever[7][0], whatever[7][1]))