列表遞推式
- 2020 年 2 月 19 日
- 筆記
前言
我們平時通常是通過 []
或 list()
函數來定義一個列表,本篇將會介紹一種全新的列表定義方式,它藉助for
循環來快速的定義列表。
列表遞推式
先舉個例子:有個列表[1,2,3],我們要將他中的每個元素加1,組成另一個列表,常見做法如下:
>>> a = [1,2,3] >>> b = [] >>> for i in a: ... b.append(i+1) ... >>> b [2, 3, 4]
我們用列表遞推式用一行程式碼能起到同樣的效果。^_^
>>> c = [i+1 for i in a] >>> c [2, 3, 4]
[i+1 for i in a]
就一行程式碼起到了同樣的作用。列表推導式能極大的簡化程式碼,但是會增加可讀性難度。其基本格式如下:
variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表達式,可以是有返回值的函數。 for out_exp in input_list: 迭代input_list將out_exp傳入out_exp_res表達式中。 if out_exp == 2: 根據條件過濾哪些值可以。
如上面的例子,要排除偶數,只對奇數操作,那麼可以這樣:
>>> d = [i+1 for i in a if i % 2 > 0] >>> d [2, 4]
如果對每個元素要進行的操作很複雜,那麼可以傳入一個函數,示例如下:
>>> def fun(i): return i*2 >>> e = [fun(i) for i in a if i % 2 > 0] >>> e [2, 6]
有了列表推導式,那麼有沒有字典推導式,集合推導式呢?大家有興趣可以自己嘗試下