Python 元组数字到数字的转换
我正在研究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
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
:)那么神秘,您能展示其他示例和输出吗?是否确实要将部分转换为字符串、与点连接并转换为浮点?