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 實驗
※(一)複雜系統的簡單例子