python 三大推導式

2022-05-07 02:33:09 字數 2329 閱讀 8335

推導式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 is

0)>>> print

(type(gnrt))

'generator

'>

字典推導和列表推導的使用方法是類似的,只不中括號該改成大括號。直接舉例說明:

大小寫合併計算:

>>> mcase = 

>>> mcase_frequency =

>>> print

(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...