Python之生成器 迭代器

2021-08-08 13:47:24 字數 1316 閱讀 5163

利用 () 建立generator:

>>> a = [x*x for x in range(10)] #列表生成式

>>> a

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> b = (x*x for x in range(10)) #用 () 建立乙個generator

>>> b

at 0x7f62455db258>

>>> next(b) #利用 next()呼叫,一次只計算乙個值

0>>> next(b)

1>>>

for y in b: #利用for遍歷generator,比較常用

... print(y)

... 49

1625

3649

6481

>>>

當函式定義中含有yield關鍵字時,該函式就是乙個generator,以斐波拉契數列為例:

>>> 

deffib

(max):

... n, a, b = 0, 0, 1

...

while n < max:

...

yield b #yield關鍵字

... a, b = b, a + b

... n = n + 1

...

>>> f = fib(10)

>>> f #generator型別

0x7f62455db360>

>>>

for x in f:

... print(x)

... 11

2358

1321

3455

for x in [1, 2, 3, 4, 5]:

pass

實際上完全等價於:

# 首先獲得iterator物件:

it = iter([1, 2, 3, 4, 5])

# 迴圈:

while

true:

try:

# 獲得下乙個值:

x = next(it)

except stopiteration:

# 遇到stopiteration就退出迴圈

break

以上內容摘抄自于廖雪峰的官方**-python教程

python之迭代器 生成器

迭代器 迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器提供了統一的訪問集合的介面,只要定義 iter 方法物件,就可以使用迭代器訪問。迭代器有兩個基本的方法 iter 方法 返回迭代器物件本身 按我自己比較土的理解方法就是,每呼叫一次iter...

Python之生成器 迭代器

生成器類似返回值為陣列的乙個函式,這個函式可以接受引數,可被呼叫,但只能產生乙個值,所以大大節省記憶體。生成器表示式的語法非常簡單,只需要將列表推導式的中括號改成小括號就可以了 1 x x for x in range 10 if x 2 0 會列印出整個列表 0,4,8,12,16 1 x x f...

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...