Python中的迭代器和生成器

2021-10-01 08:51:19 字數 947 閱讀 4286

class

fibs

:def

__init__

(self, n =20)

: self.a =

0 self.b =

1 self.n = n

def__iter__

(self)

:return self

def__next__

(self)

: self.a, self.b = self.b, self.a + self.b

if self.a > self.n:

raise stopiteration

return self.a

fibs = fibs(

)for each in fibs:

print

(each)

print

([i*i for i in

range(10

)])print

([i for i in

range

(1000)if

not(i %2)

and(i %3)

])print

()

但是如果輸入:

print

(i for i in

range(10

))

執行結果就會是:

 at 0x000001bb4b9a9a48

>

還有乙個特性更厲害,如果將生成器表示式作為函式引數使用的話,可以直接寫推導式,不必加小括號:

sum

(i for i in

range

(100)if

not(i %10)

)

python中迭代器和生成器

迭代器 迭代器的實質是實現了next 方法的物件,常見的元組 列表 字典都是迭代器。迭代器中重點關注兩種方法 iter 方法 返回迭代器自身。可以通過python內建函式iter 呼叫。next 方法 當next方法被呼叫的時候,迭代器會返回它的下乙個值,如果next方法被呼叫,但迭代器沒有只可以返...

python中迭代器和生成器

1 迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。迭代器有兩個基本...

python中迭代器和生成器

這裡的迭代可以指for迴圈,在python中,對於像list,dict和檔案等而言,都可以使用for迴圈,但是它們並不是迭代器,它們屬於可迭代物件。1.1什麼可迭代物件 最簡單的解釋 可以使用for.in.語句進行迴圈的物件,就是可迭代物件 iterable 可以使用isinstance 方法進行判...