from collections importiterable,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...