推導式comprehensions(又稱解析式),是python的一種獨有特性。推導式是可以從乙個資料序列構建另乙個新的資料序列的結構體。 共有三種推導,在python2和3中都有支援:
1、使用生成list
基本格式
var = [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: 根據條件過濾哪些值可以。
(1)最簡單的列表推導式
>>> [i for i in'123']
['1', '
2', '
3']
(2)帶條件的列表推導式
單條件
>>> [i for i in'123
'if i!='2'
]['1
', '
3']
多條件
>>> [i for i in'123
'if i!='2'
if i!='3'
]['1
']
if-else:
>>> [x+1 if x>=5 else x+5 for x in range(10)][5, 6, 7, 8, 9, 6, 7, 8, 9, 10]
(3)兩個**的列表推導式
1.笛卡爾積列表推導式
>>> [(i,j) for i in'123
'if i!='2'
for j in
'456']
[('1', '
4'), ('
1', '
5'), ('
1', '
6'), ('
3', '
4'), ('
3', '
5'), ('
3', '
6')]
2.非笛卡爾積列表推導式
>>> [(i,j) for i in range(3) for j in range(6) if (i+j)%3==0][(0, 0), (0, 3), (1, 2), (1, 5), (2, 1), (2, 4)]
(4)列表推導式生成匿名函式列表
>>> func=[lambda x: x*i for i in range(3)]>>>func
[. at 0x0000028f1a3d6af8>, . at 0x0000028f19d50af8>, . at 0x0000028f1a409048>]
>>> [f(2) for f in
func]
[4, 4, 4]
>>> func=[lambda x,i=i: x*i for i in range(3)]
>>> [f(2) for f in
func]
[0, 2, 4]
(5)巢狀推導式
>>> list_of_list = [[1,2,3],[4,5,6],[7,8]]>>>
>>> #
flatten
... print([y for x in list_of_list for y in
x])[1, 2, 3, 4, 5, 6, 7, 8]
2、使用()生成generator
將倆表推導式的改成()即可得到生成器。
>>> gnrt = (i for i in range(30) if i % 3 is0)>>> print
(type(gnrt))
'generator
'>
字典推導和列表推導的使用方法是類似的,只不中括號該改成大括號。直接舉例說明:
大小寫合併計算:
>>> mcase =>>> mcase_frequency =
(mcase_frequency)
它們跟列表推導式也是類似的。 唯一的區別在於它使用大括號{}。
>>>
完結!!
python 推導 Python 推導式
python 語言有一種獨特的語法,它可以用最簡單的方式生成乙個列表 元組或字典,它們叫推導式。常見的推導式 列表推導式 字典推導式 集合推導式 列表推導式 列表推導式可以快速生成乙個列表,其語法格式為 x x for x in range 6 結果 0,1,4,9,16,25 相當於 l for ...
python3 推導式大總結
推導式 總結並引出 生成器推導式 列表推導式 a i for i in range 100 if not i 2 and i 3 注意列表是中括號 三項內容 變數 迴圈體 判斷條件 a 輸出為符合判斷條件的結果 100以內能被2整除的數字 2,4,8,10,14,16,20,22,26,28,32,...
Python列表推導式,集合推導式,元組推導式
先定義乙個列表a a 1,2,3,4,5,6,7,8 1a 1,2,3,4,5,6,7,8 列表推導 d i 2 for i in a 集合推導 e 元組推導 f i 2 for i in a print type d print type e print type f 輸出 123 4567 89...