Python 迭代器 生成器

2022-08-16 02:09:19 字數 2616 閱讀 7249

(1)簡單使用

>>> li=[5,6,7]

>>>

>>> it=iter(li)

>>>

>>> print

(it)

>>>

>>> print(it.__next__

())5

>>>

>>> print(it.__next__

())6

>>>

>>> print(it.__next__

())7

>>>

(2)字典的迭代預設為字典key的迭代:

字典value的迭代:

>>> a= iter(.values())

>>>type(a)

'dict_valueiterator

'>

得到的結果

>>> print(a.__next__

())2

>>> print(a.__next__

())4

>>>

(3)next迭代器,next

的用法

a = [1,2,3]

>>> a=iter(a)

>>>next(a)

1>>>next(a)

2>>>next(a)

3

(1)簡單應用*注意:推導列表和生成器寫法的區分

>>> l = [x * x for x in range(10)]#

推導列表的寫法

>>> print

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

>>> g = (x * x for x in range(10))#

生成器的寫法

>>> print

(g)at 0x000002301ab5fe08>#表示g為生成器

>>>

結果如下:

>>> print

(next(g))

0>>> print

(next(g))

1>>> print

(next(g))

4>>> print

(next(g))

9>>>

>>> for n in

g:...

print

(n)...

1625

3649

6481

>>>

>>> l = [x for x in range(1,10,2)]

>>> print

(l)[1, 3, 5, 7, 9]

>>> g = (x for x in range(1,10,2))

>>> print

(g)at 0x000002301ab5feb8>

>>> print

(next(g))

1>>> print

(next(g))

3>>> print

(next(g))

5>>> print

(next(g))

7>>>

>>> for n in g: #

注意此處的結果

... print

(n)...

9>>>

(2)yield生成器,相當於next

定義yield生成器的方法:
>>> def odd():#

定義yield生成器的方法

... print ('

step 1')

...

yield 1...

print ('

step 2')

...

yield 3...

print ('

step 3')

...

yield 5...

>>>

傳入引數後,得到的結果:
>>> o =odd()

>>> print

(next(o))

step 1

1>>> print

(next(o))

step 2

3>>> print

(next(o))

step 3

5>>>

>>> for i in o:

... print (i)

...>>>

Python 迭代器 生成器

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

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...