2015-11-06 45 views
2

由於一些切片我以前在我的劇本,我才結束了一個巨大的元組,看起來像這樣:如何將列表中的某些項目從列表轉換爲浮點型?

(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, [102.37], [129.6], [190.64], [181.98], [192.79]) 

在上面的例子中前7項是花車,其餘是包含每一個元素列表,這也是漂浮物。

我想擺脫清單,並保持浮動,所以我可以加起來所有的價值來計算6個月期間的平均股票價格。

什麼是達到這個最pythonic方式?

+0

你想再次結束了一個元組?或者你想要一個列表? –

+0

我想保留元組。 –

回答

8

這個函數返回一個float它是否給出一個浮動或列表:

def delistify(x): 
    try: 
     return x[0] 
    except TypeError: 
     return x 

如果您需要的輸出是一個元組,你可以用它喜歡:

print tuple(delistify(x) for x in my_list) 

或者,如果列表也行,最Python的是一個列表理解:

print [ delistify(x) for x in my_list ] 
+1

不錯!這是做的伎倆,謝謝隊友。 –

-1

如果你想從列表中提取的數字:

In [1]: t = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, [102.37], [129.6], [190.64], [181.98], [192.79]) 
In [2]: tuple(tt if isinstance(tt, float) else tt[0] for tt in t) 
Out[2]: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 102.37, 129.6, 190.64, 181.98, 192.79) 

如果你想「擺脫」的名單:

In [3]: tuple(tt for tt in t if isinstance(tt, float)) 
Out[3]: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) 
+0

使用'type'函數進行類型檢查並不可靠。你應該使用'isinstance'來代替。 –

+0

@ScottHunter yup - 顯然OP想要從列表中提取數字。 – xnx

相關問題