2016-08-02 73 views
-1

我有一个数字列表[0,10,20,30,40,50],现在这个列表将被随机数字追加,例如33,43,我必须每次检查列表它追加到列表中,我希望它们四舍五入到30和40.取整python中的数字

+2

为什么不追加前一轮他们,这将是一个整体快了很多,你能告诉我们你的代码吗? – depperm

+2

对于舍入,你可以使用负精度的内建'round',例如'round(34.567,-1)' –

+0

我无法控制将被添加到列表中的数字。但是我必须确定它们是四舍五入的。 – Sai

回答

1

使用round()内置函数。结合列表理解,可以给我们一个富有表现力的单行功能!

def round_list(l): 
    return [int(round(i, -1)) for i in l] 

输出示例:

l = [24, 34, 41, 40, 12, 434, 53, 53] 
print round_list(l) 
>>> [20, 30, 40, 40, 10, 430, 50, 50] 
+0

后四舍五入。感谢您的回复如此之快。如何检查列表中的值是否舍入为20,30,40? – Sai

+1

无需检查值是否舍入到最接近的10,因为此函数返回一个新列表,其中每个元素总是四舍五入到最接近的10。 – ospahiu

1

为了四舍五入到最接近的10,您可以:

  1. 除以10
  2. 对新号码的编号使用round()
  3. 乘以圆形数字BER 10

下面的代码应该包含你所需要的:

import random 

l = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0] 

# generate a random number 
random_number = random.uniform(30, 100) 

# round the number to nearest 10 
def round_number(num): 
    x = round(num/10) * 10 
    return x 

rounded_number = round_number(random_number) 

# append to the list 
l.append(rounded_number) 

测试上面:

>>> print random_number 
64.566245501 
>>> print rounded_number 
60.0 
>>> print l 
[0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0]