Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组数字到数字的转换_Python_Tuples - Fatal编程技术网

Python 元组数字到数字的转换

Python 元组数字到数字的转换,python,tuples,Python,Tuples,我正在研究python,我被困在这个问题上 输入(有一个元组): 输出: a = 0.1 单个数字和两个元素 >>> a = (0, 1) >>> a[0] + a[1] * 0.1 0.1 >>> from itertools import count >>> a = (0, 1) >>> sum(n * 10 ** i for i, n in zip(count(0, -1), a)) 0.1 &g

我正在研究python,我被困在这个问题上

输入(有一个元组):

输出:

a = 0.1

单个数字和两个元素

>>> a = (0, 1)
>>> a[0] + a[1] * 0.1
0.1
>>> from itertools import count
>>> a = (0, 1)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.15320000000000003   
>>> a = (0, 1)
>>> float('{0}.{1}'.format(*a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> float('{0}.{1}'.format(a[0], ''.join(str(n) for n in a[1:])))
0.1532
多个单位数

>>> a = (0, 1)
>>> a[0] + a[1] * 0.1
0.1
>>> from itertools import count
>>> a = (0, 1)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.15320000000000003   
>>> a = (0, 1)
>>> float('{0}.{1}'.format(*a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> float('{0}.{1}'.format(a[0], ''.join(str(n) for n in a[1:])))
0.1532
使用
reduce
(对于Py 3.0+您将需要:
从functools导入reduce

使用
十进制
模块

>>> from decimal import Decimal
>>> a = (0, 1, 5, 3, 2)
>>> Decimal((0, a, -len(a) + 1))
Decimal('0.1532')
任意两个数字

>>> a = (0, 1)
>>> a[0] + a[1] * 0.1
0.1
>>> from itertools import count
>>> a = (0, 1)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.15320000000000003   
>>> a = (0, 1)
>>> float('{0}.{1}'.format(*a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> float('{0}.{1}'.format(a[0], ''.join(str(n) for n in a[1:])))
0.1532
任何数字

>>> a = (0, 1)
>>> a[0] + a[1] * 0.1
0.1
>>> from itertools import count
>>> a = (0, 1)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.15320000000000003   
>>> a = (0, 1)
>>> float('{0}.{1}'.format(*a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> float('{0}.{1}'.format(a[0], ''.join(str(n) for n in a[1:])))
0.1532
可能存在一些浮点误差,您可以使用
Decimal
s来修复这些误差,例如

>>> sum(Decimal(n) * Decimal(10) ** Decimal(i) for i, n in zip(count(0, -1), a))
Decimal('0.1532')

假设列表
a
中的元素是个位数
0-9
,则可以使用数学:

>>> a[0] + a[1] * 0.1
0.10000000000000001
或转换为字符串,连接并转换回浮点:

>>> float(str(a[0])+'.'+str(a[1]))
0.10000000000000001

“easy way”也只适用于元组的第二个值在0到0之间的情况9@pepr+refp-true,可能是我冒失的假设,调整了文本。第一个例子可以写得更简单,如
float({0}.{1})。format(*a))
。我没有说它不好。实际上,它没有
*a
:)那么神秘,您能展示其他示例和输出吗?是否确实要将部分转换为字符串、与点连接并转换为浮点?