生成器及列表推導式

2022-04-04 13:16:52 字數 760 閱讀 1275

迭代器:內部含有__iter__,__next__方法的物件

可迭代物件不能取值,因為內部沒有__next__的方法

迭代器的優點:

1、節省記憶體

2、惰性機制

3、單向、不可逆

如何判斷可迭代物件、迭代器:

1、__iter__ in dir(obj)

2、引用乙個模組:from collections import iterator(迭代器)

print(isinstance(引數名,iterator)

from collections import iterable(可迭代物件)

print(isinstance(引數名,iterable))

生成器本身就是迭代器

def func():

yield 22

def func():

print(111)

yield 222

g_obj = func()

列表推導式和生成器表示式:

列表推導式

li = [i for i in range(1,n)] #[變數(加工後的變數) for 變數 in iterable]迴圈模式

li = [變數(加工後的變數) for 變數 in iterable if 條件] 篩選模式

生成器表示式

將列表推導式的換成()

為什麼要有生成器:

生成器本身是自己用python**構建的,這樣就滿足了個性化需求方便之後使用。

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

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

推導式 生成器

1.推導式生成列表 表示式 for item in 可迭代物件 或者 表示式 for item in 可迭代物件 if 條件判斷 推導式生成列表 ls x for x in range 1,5 if x 2 0 2,4 2.生成器生成元組 表示式 for item in 可迭代物件 或者 表示式 f...

生成器 推導式

建立生成器的方法 1.通過生成器函式 yield 2.生成器表示式 def func1 x sum 0 for i in range 1,x x 1 yield xg func1 6 生成器函式對 print g 表示這是乙個迭代器print g.next 乙個next對應乙個yield print...