在python中保留小数点后的第一个数字

在python中保留小数点后的第一个数字,python,excel-formula,Python,Excel Formula,我希望python做一些类似于MS Excel的事情=舍入(数字,数字)。在我的例子中,看起来像这样 a = [3.5, 43.689, 113.225, 65.4545] 我试着这样做: a = [3.5, 43.689, 113.225, 65.4545] b = [str(i).split(".") for i in a] c = [i[0] for i in b] d = [i[1][0] for i in b] e = list(zip(c,d)) f = [float(".".

我希望python做一些类似于MS Excel的事情
=舍入(数字,数字)
。在我的例子中,看起来像这样

a = [3.5, 43.689, 113.225, 65.4545]
我试着这样做:

a = [3.5, 43.689, 113.225, 65.4545]
b = [str(i).split(".") for i in a]

c = [i[0] for i in b]
d = [i[1][0] for i in b]

e = list(zip(c,d))
f = [float(".".join(i)) for i in e]
import math
f = [math.floor(x * 10)/10.0 for x in a]
print(f)
这提供了我需要的输出:

>>> print (f)
[3.5, 43.6, 113.2, 65.4]

在Python中有没有更好、更简单的方法来执行上述操作?

与您几乎相同的方法:

a = [3.5, 43.689, 113.225, 65.4545]
f = [float("{:.1f}".format(x)) for x in a]
无论如何,请记住,您可以只使用小数并使用其表示形式

然后,您可以使用math
floor
进行如下变换:

a = [3.5, 43.689, 113.225, 65.4545]
b = [str(i).split(".") for i in a]

c = [i[0] for i in b]
d = [i[1][0] for i in b]

e = list(zip(c,d))
f = [float(".".join(i)) for i in e]
import math
f = [math.floor(x * 10)/10.0 for x in a]
print(f)

这里有一个。

我想你可以用圆形表达:

>>> a = [3.5, 43.689, 113.225, 65.4545]
>>> [float(Decimal(b).quantize(decimal.Decimal('.0'), rounding=decimal.ROUND_DOWN)) for b in a]
[3.5, 43.6, 113.2, 65.4]

我希望这对你有帮助;)

我认为这更像是一种蟒蛇式的方式:

from decimal import Decimal, ROUND_DOWN
Decimal(65.4545).quantize(Decimal('.0'), rounding=ROUND_DOWN)

int
如果这是您想要的,则向零舍入:

a = [3.5, 43.689, 113.225, 65.4545]
[int(x * 10) / 10 for x in a]
输出:

[3.5, 43.6, 113.2, 65.4]

ROUNDDOWN
始终向零舍入。@cᴏʟᴅsᴘᴇᴇᴅ, 是的,只要意识到这一点,他就不会产生预期的结果。43.7 != 43.6