python基礎 生成器

2021-07-30 03:04:51 字數 1244 閱讀 3358

生成器是根據某種演算法得出的一系列元素,需要用到該元素,才會生成出來,比列表節省記憶體空間。生成器相當於儲存演算法,授人以漁,列表之類的是授人以魚。

第一種建立生成器的方法:

1、gen = (x **2  for x in range(5))

type(gen)

通過next()函式得到生成器的每個值

next(gen)

0next(gen)

1next(gen)

4next(gen)

9next(gen)

16next(gen)

traceback (most recent call last):

file "", line 1, in

stopiteration

不過一般用for迴圈來使用生成器:

gen2 = (x * 9  for x in range(3))

for a in gen2:

print(a)09

18 第二種建立生成器的方法:

def gen4(num):

for a in range(num):

yield a

呼叫了這個函式,才會返回乙個生成器物件,判斷是否是生成器物件

>>>type(gen4)

>>>type(gen4(1))

>>>from types import generatortype

>>>isinstance(gen4,generatortype)

false

>>>isinstance(gen4(1),generatortype)

true

def gen5():

yield 1

print('aaa')

print('bbb')

yield 2

rr = gen5()

next(rr)

1next(rr)

aaabbb2

有個疑問,為啥在next()函式直接用gen5()的時候是這樣的?

>>>next(gen5())

1>>>next(gen5())

1

原來這樣的話,是兩次呼叫了gen5(),每次返回了乙個生成器,呼叫兩次,就返回兩個,然後各自使用next()函式,各自都是首次呼叫next()函式,就返回1

python基礎 生成器

生成器函式 def generator print 1 return a ret generator print ret 只要含有yield關鍵字的函式都是生成器函式 yield不能和return共用且需要寫在函式內 def generator print 1 yield a 生成器函式 執行之後會...

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...

python生成器好處 Python生成器筆記

python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...