(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...