1

我非常接近让这个特定功能正常工作,但我碰壁了。

我有一个浮点数列表,只有当元素大于 0.50 时,我才想将其舍入到最接近的整数。如果有一个意想不到的元素(任何不是数字的东西),我想保持原样。

mylist = ['58.20','34.99','0.39','0.89','34.55', '-']

预期结果

mylist = ['58','35','0.39','1','35', '-']

到目前为止,这是我的代码:

[str(int(round(float(x)))) if float(x) > 0.5 else str(x) for x in mylist]

我猜我需要添加一个“elif”语句,但我不确定表达式会是什么样子?

谢谢大家!

4

1 回答 1

1

您可以在此处使用异常处理:

def solve(x):
    try:
        num = float(x)
        return str(int(round(num))) if num > 0.50 else x
    except ValueError:
        return x
...     
#Using list comprehension
>>> [solve(x) for x in  lis]
['58', '35', '0.39', '1', '35', '-']
#using map
>>> map(solve, lis)
['58', '35', '0.39', '1', '35', '-']
于 2013-06-11T16:51:53.723 回答