python列表推導式中使用if-else
阿新 • • 發佈:2017-07-14
python列表推導式 if-else
今天在處理自動化郵件數據時碰到數據行中包含字符串後,從hive中拿到的整數型數據自動轉化成了浮點數,嚴重影響美觀性。因此想到了用列表推導式來做轉化,將其中的數字型數據全部轉化為整型,而字符型數據保留原樣。
列表推導式總共有兩種形式:
①[x for x in data if condition]
此處if主要起條件判斷作用,data數據中只有滿足if條件的才會被留下,最後統一生成為一個數據列表
②[exp1 if condition else exp2 for x in data]
此處if...else主要起賦值作用,當data中的數據滿足if條件時將其做exp1處理,否則按照exp2處理,最後統一生成為一個數據列表
例子如下:
data = [‘driver‘, ‘2017-07-13‘, 1827.0, 2058.0, 978.0, 1636.0, 1863.0, 2537.0, 1061.0]
(1)若我要取得以上列表中值大於2000的數值,這裏可以使用列表推導式的形式①:
[x for x in data if x > 2000]
得到如下結果(字符串類型數據被認為是無窮大數):
[‘driver‘, ‘2017-07-13‘, 2058.0, 2537.0]
(2)若要解決我上面提到的問題,則需要使用列表推導式的形式②
[int(x) if type(x) == float else x for x in data]
得到結果:
[‘driver‘, ‘2017-07-13‘, 1827, 2058, 978, 1636, 1863, 2537, 1061]
本文出自 “abe” 博客,請務必保留此出處http://abezoo.blog.51cto.com/7223683/1947675
python列表推導式中使用if-else