Python 知識點: 列表推導式(list comprehension)
Python裡面有個很棒的語法糖(syntactic sugar),它就是 list comprehension ,有人把它翻譯成“列表推導式”,也有人翻譯成“列表解析式”。名字聽上去很難理解,但是看它的語法就很清晰了。雖然名字叫做 list comprehension,但是這個語法同樣適用於dict、set等這一系列可迭代(iterable)資料結構。
語法規範:
out_list = [out_express for out_express in input_list if out_express_condition]
其中的 if 條件判斷根據需要可有可無。
下面看一個具體的例子,生成一個包含10以內的偶數的list:

接著我們用列表推導式實現該功能:

還是一行程式碼就搞定,但一行裡面有兩個for,看起來很亂,兩個for,哪個在前哪個在後呢? 只要記住他們的順序和不用推導式的原始for迴圈是一致的即可。
推導式的可讀性
一行程式碼搞定幾行程式碼的事情,看上去很簡潔,但是讀起來很費勁,尤其是當條件語句很長的時候,把這一行程式碼變得很長,超過了程式碼規範規定的長度(一般是80個字元),也使得理解程式碼變得困難。
面對一行長長的程式碼該如何下口讀,如何理解呢?彆著急,好在Python允許在中括號、花括號之間斷行:
列表推導式的斷行:


通過以上講解就可以輕鬆掌握Python的列表推導式(list comprehension)了,簡而言之, 就是把普通的多行for迴圈壓縮成一行程式碼,這種壓縮語法適用於列表、字典、集合等可迭代資料結構(iterables)。
文章版權歸屬於 【 猿人學】www.yuanrenxue.com