2016-08-02 67 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]