迭代器和生成器簡介

2021-09-24 08:56:25 字數 885 閱讀 3210

(i*i for i in range(8))#生成器表示式

def fib(n):

i=0a,b = 1,1

while i < n:

yield a

a,b = b,a+b

i+=1

f = fib(6)

for item in f:

print(item)

list(fib(6))

在生成器中,如果沒有return,則預設執行到函式完畢時返回stop iteration,如果有return,直接丟擲stop iteration

return有返回值的話,不是返回程式的返回值,而是stop iteration異常的說明

def test():

n=0while n<10:

yield n

n+=2

# return

return 'haha'

a = test()

print(a)

next(a)

next(a)

可用於for in 語句的物件被稱為可迭代物件

可以用isinstance()判斷乙個物件是否是可迭代物件的物件

iterable用於表示可迭代物件

iterator :可以被next函式呼叫的

可以呼叫內建函式iter()把不支援惰性推算的可迭代物件轉換為迭代器物件

如果乙個物件同時實現了特殊方法__iter__()和__next__(),那麼該物件也被稱為迭代器物件

如果將該物件用於for in 語句,首先呼叫__iter__,返回乙個可迭代物件,然後不斷呼叫__next__返回下一次迭代的值,直到stop iteration

Python迭代器和生成器簡介

1.迭代器協議 1 迭代器協議是指 物件需要提供next方法,它要麼返回迭代中的下一項,要麼就引起乙個stopiteration異常,以終止迭代 2 可迭代物件就是 實現了迭代器協議的物件 3 協議是一種約定,可迭代物件實現迭代器協議,python的內建工具 如for迴圈,sum,min,max函式...

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...