1. 程式人生 > >python列表推導式中使用if-else

python列表推導式中使用if-else

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