天天看點

python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式

清單推導式即List Comprehensions,是Python内置的非常簡單卻強大的可以用來建立list的文法。它根據已有清單,高效建立新清單。

清單推導式是Python疊代機制的一種應用,它常用于實作建立新的清單,傳回的是一個清單,是以用在[]中。

python中為什麼會有這種功能無比強大,代碼無比簡介的功能,這與python這個語言設計的初衷有關,正所謂 人生苦短,我用python,打開idle 輸入 import this,螢幕就會輸出 python 語言設計之道,這裡面提到了幾個python 代碼的關鍵字:Beautiful (優美),Explicit (明了),Simple (簡潔),Flat (扁平化),Readability (可讀性)等,python的清單推導式就是能夠展現 python zen的集大成之作。

>>> import thisThe Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.......
           

先假設一個場景,已經有一個清單[0,1,2,3,4,5]現在需要建立一個清單,新清單中的内容是原來清單的每一個數加上2,按照我們前面講到的内容,需要考慮兩點,用 for in 循環讀取清單中的每一個内容,2 每一個内容加上2然後添加到新清單中,邏輯想清楚了,那就撸代碼吧。

>>> a = [0,1,2,3,4,5]>>> new_a = []>>> for i in a:  new_a.append(i+2)>>> new_a[2, 3, 4, 5, 6, 7]
           

分析上面的代碼,為了完整剛剛的想法,我們寫了4句代碼,ok,下面看看清單推導式是如何完成這個任務的。

>>> new_b = [ i+2 for i in a]>>> new_b[2, 3, 4, 5, 6, 7]
           

only one ,僅僅一行代碼,就實作了上面的功能,美化了代碼,節約了生命,還有什麼比這更beautiful的呢,強烈建議各位在今後的代碼中多多使用這個功能。

其實清單解析中不僅可以有循環功能,還有過濾功能,下圖是清單解析式的基本結構,整個清單解析裡面的内容都是在中括号内,至少有兩部分組成,第一部分是 操作 i 的一句話語句,注意這裡面隻能有一句話語句, 空格之後就是第二部分内容 一個 關于 i的循環體,第三部是可選内容,通常用于過濾滿足一定條件的i,例如我們可以對上面的例子過濾 清單 a 中 滿足 偶數的 對象 +2。

python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式
>>> new_b = [ i+2 for i in a if i%2 == 0]>>> new_b[2, 4, 6]
           

OK,本小節講解先到這裡,本期的作業,重寫3遍上面的提到語句。還是那句話,歡迎截圖,截圖越多的同學,今後的作業被選中,點評的機率越大。

本系列由解憂資料出品

城市和地理資料

 三w點jieyoudata點com(www.jieyoudata.com)

python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式

找資料,來解憂——它難道不香嗎

python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式
python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式

-一點分享     更多選擇-

歡迎加入解憂資料

Jieyou data

http://www.jieyoudata.com

python清單推導式_從Python到空間分析Arcpy || 1.3.4 Less Is More 之清單推導式

解憂公衆号

微信号 : 解憂資料

歡迎您的