Retaining first number after the decimal in python
我想让python做一些类似于ms excel
1 | a = [3.5, 43.689, 113.225, 65.4545] |
我试过这样:
1 2 3 4 5 6 7 8 | 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] |
号
它提供了我需要的输出:
1 2 | >>> print (f) [3.5, 43.6, 113.2, 65.4] |
在python中有没有更好和最简单的方法来完成上面的工作?
就像你一样:
1 2 | a = [3.5, 43.689, 113.225, 65.4545] f = [float("{:.1f}".format(x)) for x in a] |
无论如何,请记住,您可以只使用小数,并使用其表示格式。
然后,您可以使用数学
1 2 3 | import math f = [math.floor(x * 10)/10.0 for x in a] print(f) |
号
这里有一个活生生的例子。
我觉得这更像是Python的方式:
1 2 | from decimal import Decimal, ROUND_DOWN Decimal(65.4545).quantize(Decimal('.0'), rounding=ROUND_DOWN) |
。
如果这是你想要的,那么
1 2 | a = [3.5, 43.689, 113.225, 65.4545] [int(x * 10) / 10 for x in a] |
输出:
1 | [3.5, 43.6, 113.2, 65.4] |
。
我想你可以用圆表达式:
1 2 3 | >>> 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] |
我希望这对你有帮助;)