当前位置: 动力学知识库 > 问答 > 编程问答 >

python - Rounding separate values in a list at the same time

问题描述:

I would like to write something which looks a bit like what I currently have in the following definition:

def rounding( sp1, sp2, sp3, sp4 ):

if () <= 700.:

round(object, -1)

elif () <= 1000.:

round(object, (-1*5))

elif () <= 10000.:

round(object, -2)

elif () > 10000.:

round(object, -3)

else:

print "Error"

return [ sp1, sp2, sp3, sp4 ]

I am really a beginner to all of this and I've probably made some horrendous mistakes in the above code. What I basically have is previously calculated these 4 values sp1, sp2 etc. I then want to be able to round these values all at the same time but depending on their individual value, they must be rounded by different amounts.

If 'sp' <= 700 : rounded to nearest 10

700 < sp <= 1000 : rounded to nearest 50

1000 < sp <= 10000 : rounded to nearest 100

10000 < sp : rounded to nearest 1000. (not code)

If something could help me I would be very grateful, thank you!

网友答案:

The tricky part is rounding to the nearest 50. That can be achieved by doubling the number, then rounding to the nearest 100, then halving the number again. At least that's the easiest way I can think of.

def nearest_50(n):
    return round(n*2, -2)/2

As for the rest, your code is not that far away from a correct solution. As Ignacio suggested, you should only round one value at a time

def my_round(n):
    if n <= 700:
        return round(n, -1)
    elif n <= 1000:
        return nearest_50(n)
    elif n <= 10000:
        return round(n, -2)
    else:
        return round(n, -3)

Then round a list of numbers like this

mylist = [... some numbers ...]
rounded = [my_round(n) for n in mylist] 
网友答案:

Write a function that rounds a single value, then use a list comprehension to pass all the values through it one at a time.

分享给朋友:
您可能感兴趣的文章:
随机阅读: