Python 列表元素字元串轉浮點

Python 列表元素字元串轉浮點

來自專欄戀習Python4 人贊了文章

在網路爬蟲或者讀取文件中的數據時,很多時候讀取出來的數值是字元串形式的,這些字元串形式的數據並不能用來作計算或者更深入的操作,因此我們需要把他們轉換為數值的形式。

簡單粗暴的 for 循環

假設,這裡有一個以字元串形式存儲數值的列表,具體如下:

a = [2, 3.5, 10, 88, 32.66]

我們需要將其轉換為浮點的形式,最簡單粗暴直接的方法,可以使用 for 循環 來處理,方法如下:

a_float = []for num in a: a_float.append(float(num))a_float>> [2.0, 3.5, 10.0, 88.0, 32.66]

我們通過 for 循環, 把列表中的每一個數值都用 float() 函數將其轉換成浮點的形式,然後再將轉換後的值添加到一個新列表中,最終我們即可得到一個浮點值得列表。

更優雅的 map() 方法

如果我們每次都需要寫一個 for 循環,這樣一來顯得不優雅,二來代碼看起來也很冗長。我們也可以使用 map() 方法來處理。具體代碼如下:

a_float_m = map(float, a)a_float_m>> <map at 0x109854da0>a_float_m = list(a_float_m)[2.0, 3.5, 10.0, 88.0, 32.66]

和剛才的 for 循環 對比,我們使用 map() 方法,只需要一行代碼就可以完成。這裡有一點需要注意,在 Python2 中,map() 返回的是列表,而在 Python3 中,返回的是迭代器。因此,我們這裡如果想得到一個列表,我們還需要使用以下 list()

意外的處理

很多時候,我們的原始數據未必是那麼完美,假如我們原始的列表中,有一些不能轉換的數據,那情況將如何?接下來,我們對 a 列表進行一些改造。

a.append(a)a>> [2, 3.5, 10, 88, 32.66, a]

接下來,我們還是對 a 使用 map() 方法:

a_float_new = list(map(float, a))>> ValueError: could not convert string to float: a

這時,我們的程序就報錯了,因為字元串不能轉成浮點數值。如果我們還希望繼續完成這個轉換,我們就需要對改造一下處理的函數,具體代碼如下:

def safe_float(number): try: return float(number) except: return Nonea_float_new = list(map(safe_float, a))a_float_new>> [2.0, 3.5, 10.0, 88.0, 32.66, None]

我們先約定好,將不能轉換的值保存為 None,然後編寫了一個 safe_float() 的方法進行處理,隨後再將這個函數傳到 map() 中,這樣,最後我們就能得到處理完成後的列表了。


推薦閱讀:

為什麼PIP不提供更新所有包的方法?
【Python 第38課】 模塊
每天學一點python 13---json的列印
Mask R-CNN TensorFlow 實驗
(一)複雜系統的簡單例子

TAG:字元串 | Python | 編程語言 |