Python列表推導式和生成式

2021-10-08 22:59:42 字數 1494 閱讀 5814

推導式

作用:按一定的邏輯順序,生成列表,簡單且快捷

語法一:[ 表示式 for 變數 in 舊列表 ]

例如生成乙個[1,2,3,4,5,6,7]列表

[x for x in

range(1

,8)]

或者生成乙個[1,4,9,16,25,36,49,64,81]的列表

[x*x for x in

range(1

,10)]

語法二:[ 表示式 for 變數 in 舊列表 if 條件 ]

篩選出[1,2,3,4,5,6,7,8,9]列表中所有偶數

a =[1

,2,3

,4,5

,6,7

,8,9

][x for x in a if x%2==

0]

生成器(generator)

作用:和推導式一樣

優點:節約空間,在需要時生成,不會一次性生成所有資料

語法:和推導式一樣 只需要將 [ ] 改為 ( )

(x for x in

range(1

,10))

next( )可以順序獲取生成器中的值

語法:next(生成器)

a =

(x for x in

range(1

,10))

b =next

(a)

b為:1

如果想獲取a中的第4個值,只需要新增乙個迴圈

a =

(x for x in

range(1

,10))

k =4

while k>0:

k -=

1 b =

next

(a)

此時a中的值為:4

__ next __( )函式 也可以順序獲取生成器中的值

語法:生成器.__next __( )

用法和next( )一樣

yield關鍵字

只要在函式中新增了yield關鍵字,就變成了乙個(生成器函式)

deffn(

):n =

0while

true

: n +=

1yield n

a = fn(

)b =

next

(a)

取值和生成器一樣

其中yield相當於 return+暫停

列表生成式(列表解析式 列表推導式)

li for i in range 0,101 print li 用列表解析式 列表生成式 列表推導式 li i for i in range 0,101 print li 裡面的i可以是其他的 li x for x in range 0,101 print li 對結果進行其他操作方式 li i ...

Python推導式(生成式)

推導式是從乙個或者多個迭代器快速簡潔的建立資料結構的一種方法。可以將迴圈和條件判斷相結合,從而避免語法冗長的 常見的列表推導式有以下兩種格式 expression for item in iterable 下面通過具體的 舉例說明列表推導式的應用 power list x x for x in ra...

生成器,生成器推導式和列表推導式

python社群,大部分生成器和迭代器是一種 生成器的本質是迭代器 唯一區別 生成器是我們自己用python 構建的資料結構 迭代器都是提供的,或者轉化得來的 生成器函式 生成器表示式 python提供的 yield 乙個next 對應乙個yield yield和下乙個yield中間有 的話只執行乙...