列表遞推式

  • 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]  

有了列表推導式,那麼有沒有字典推導式,集合推導式呢?大家有興趣可以自己嘗試下