python基礎十一之迭代器和生成器

2022-05-17 08:31:40 字數 1356 閱讀 3563

可迭代

內建方法中含有__iter__的資料型別都是可迭代的,

只要是可迭代的就可以使用for迴圈,反之亦然。

print(dir(''))   #

dir()函式可以獲取當前資料型別的所有內建方法 返回值是list

print('

__iter__

'in dir()) #

判斷是否含有__iter__內建方法

迭代器內建方法中含有__iter__和__next__的都是迭代器,所以迭代器一定是可迭代的

#

乙個可迭代的物件呼叫__iter__()之後會返回乙個迭代器

print(type(.__iter__())) #

迭代器可以使用__next__()方法乙個乙個去獲取值

li = [1, 2, 3, 4, 5]

iterator = li.__iter__

()print(iterator.__next__()) #

1print(iterator.__next__()) #

2print(iterator.__next__()) #

3

迭代器的好處:

從容器內一一取值,可以取出全部內容

節省記憶體空間:每次取值時才在記憶體中生成乙個值

迭代器和可迭代判斷方法

from collections import

iterator

from collections import

iterable

print(isinstance(, iterator)) #

iterator 迭代器

print(isinstance(, iterable)) #

iterable 可迭代

生成器生成器是含有yield關鍵字的迭代器。

#

定義"""

def generator():

函式體yield 返回值

"""

呼叫生成器後返回的是乙個生成器。

def

generator():

print('

生成器'

)

yield

'zxc

'return'a

'#生成器中yield和return能同時存在,return在yield後面定義沒有任何意義,

#return在yield前面定義將無法執行yield,也就不在是生成器了

ret =generator()

print(type(ret)) #

Python基礎之迭代器

一喪 別害怕,反正都會後悔的 認識迭代器一定要認識乙個單詞yield。yield是什麼意思?在筆者認為它就是乙個暫停並輸出的意思,當再次呼叫時從暫停處繼續執行 到達下乙個暫停並輸出。我們來看乙個簡單的 吧。def shuchu num for n in range num yield n f shu...

Python基礎之迭代器詳解

迭代器即用來迭代取值的工具,而迭代是重複反饋過程的活動,其目的通常是為了逼近所需的目標或結果,每一次對過程的重複稱為一次 迭代 而每一次迭代得到的結果會作為下一次迭代的初始值,單純的重複並不是迭代。例項 goods mac lenovo acer dell sony index 0 while in...

python基礎之迭代器生成裝飾器

容器是一種把多個元素組織在一起的資料結構,容器中的元素可以逐個地迭代獲取,可以用in,not in關鍵字判斷元素是否包含在容器中。通常這類資料結構把所有的元素儲存在記憶體中 也有一些特例,並不是所有的元素都放在記憶體,比如迭代器和生成器物件 在python中,常見的容器物件有 容器比較容易理解,因為...