可迭代物件 迭代器 生成器之間的關係

2022-06-01 03:39:12 字數 1152 閱讀 2306

from collections import

iterable,iterator

from abc import

abcmeta, abstractmethod

assert 1 in [1,2,3]

#assert 4 in [1,2,3]

#assert len([1,2]) >=5,'列表元素個數小於5'

d =

assert 1 ind#

assert 'foo' in d

print(isinstance(iter(),iterable))#

true

print(isinstance(iter(),iterator))#

true

print(isinstance(,iterable))#

true

for i in iter([1,2,3]):

print('

111',i,type(i),type(iter([1,2,3])))

'''111 1 111 2 111 3

'''class

fib:

def__init__

(self):

self.prev =0

self.curr = 1

def__iter__

(self):

return

self

def__next__

(self):

value =self.curr

self.curr +=self.prev

self.prev =value

return

value

f =fib()

print(isinstance(f,iterable))#

true

print(isinstance(f,iterator))#

true

可迭代物件:可以進行for迴圈都是可迭代物件,原因是其內部實現了乙個__iter__方法

迭代器:能夠進行next(迭代器物件),都是迭代器物件,其內部實現了__iter__和__next__方法

生成器:元祖推導式和函式裡使用yield的函式都是生成器

生成器屬於迭代器

迭代器屬於可迭代物件

可迭代物件 迭代器,生成器

可迭代物件 iterator 列表 集合 元組 字典 字串 生成器 我們可以使用isintance 判斷乙個物件是否是iterator物件 生成器 通過列表生成式,我們可以直接建立乙個列表,但是,受到記憶體限制,列表容量肯定是有限的,如果我們僅僅需要訪問前面幾個元素,如果列表元素可以按照某種演算法推...

可迭代物件 迭代器 生成器

可迭代物件 for迴圈機制 迭代器生成器 總結type所返回的型別是例項物件的類物件,而isinstance所進行的判斷則包含了例項物件的類物件及其父類。如圖 可迭代物件 迭代器 生成器所屬的型別分別為collections包裡的iterable,iterator,generator.實現了 ite...

可迭代物件 迭代器 生成器

名詞解釋 可迭代物件 1 遵循了 實現了 迭代器協議的物件。物件內部定義了乙個 iter 方法,以實現迭代器協議 2 列表 元組 字典 字串等等的都不是可迭代物件,當用for迴圈遍歷的時候,其實for先去執行了.iter 方法,將列表 元組 字串等變成乙個可迭代的物件,在進行迭代。iter 下有 n...