可迭代的對象(Iterable):可以作用域For循環(huán)
生成器(generator):本質(zhì)是一個函數(shù),定義了可以使用next(),函數(shù)輸出值,調(diào)用生成器輸出生成器對象,生成器一定是可以迭代的
eg:? g = (x * x for xi in range(10))? // g為一個生成器對象
? ? ? ? print(next(g))
迭代器(Iterator):是一種支持next()操作的對象,凡是可作用于next()函數(shù)的對象都是Iterator類型,它們表示一個惰性計算的序列;
from collections.abc import Iterator
it = iter([1,2,3,4,5])# 循環(huán):
while True:
try:
# 獲得下一個值:
x = next(it)
except????StopIteration:
# 遇到StopIteration就退出循環(huán)
break
(3)區(qū)別:
①生成器是生成元素的,迭代器是訪問集合元素的一中方式
②迭代輸出生成器的內(nèi)容
③迭代器是一種支持next()操作的對象
④迭代器(iterator):其中iterator對象表示的是一個數(shù)據(jù)流,可以把它看做一個有序序列,但我們不能提前知道序列的長度,只有通過next()函數(shù)實現(xiàn)需要計算的下一個數(shù)據(jù)??梢钥醋錾善鞯囊粋€子集。