2013-06-11 48 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', '-'] 
相關問題