2013-06-11 52 views
1

我非常接近有这个特殊功能工作,但我已经打了一堵墙。Python:追加到列表如果项目不是数字

我有一个浮点列表,如果元素大于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”语句,但林不知道如何表达会看起来像?

谢谢大家!

+0

你没有花车的列表;你有一个字符串列表。 – geoffspear

+0

你有一个类似float的字符串的列表,偶尔会出现类似非float的字符串。您没有浮动列表。也许你想重新考虑你的数据结构? –

+0

.39不大于.5 – squiguy

回答

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', '-'] 
相关问题