生成器都是迭代器,迭代器不一定是生成器
迭代器包含生成器
list
tuple
dict string :iterable(可迭代物件)
l =[2
,2,3
,4] d =
iter
(l)#相當於l.__iter__()
print
(d)#
什麼是迭代器?
滿足兩個條件:1.有iter方法 2.有next方法
l = [2,2,3,4]
d = iter(l)
print(d)
print(next(d))
print(next(d))
print(next(d))
print(next(d))
print(next(d)) #stopiteration
注:通過生成器和迭代器的學習,我們可以知道:
for 迴圈內部三件事:
1.呼叫可迭代物件的iter方法返回乙個迭代器物件
2.不斷呼叫迭代器物件的next方法
3.處理stopiteration
for i in [1,2,34]:
iter([1,2,34])
**可以使用isinstance()判斷乙個物件是否是iterable(可迭代)物件:**
from collections import iterator,iterable
#iterator (迭代器)
#iterable (可迭代物件)
l = [2,2,3,4]
d = iter(l)
print(d)
#此時 這裡的 l 是可迭代物件 d 是迭代器
print(isinstance(l,list))
print(isinstance(l,iterable))
print(isinstance(l,iterator))
print(isinstance(d,iterator))
python之迭代器
可迭代物件就是序列觀念的通用化,如果物件是實際儲存的序列,或者可以在迭代工具環境 eg for迴圈 中一次產生乙個結果的物件,就可看成是可迭代的。可迭代物件包括實際序列和按照需求而計算的虛擬序列。常見的迭代工具 for迴圈 列表解析 in成員關係測試以及map內建函式等。1.檔案迭代器 readli...
Python之迭代器
我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。可以使用...
python之迭代器
首先需要搞清楚兩個概念 可迭代,迭代器,兩者不能混為一談。可以直接作用於for迴圈的物件統稱為可迭代物件 iterable python裡可以用isinstance iterable 來檢測第乙個引數是不是可迭代的 這裡第乙個引數是乙個列表 注意,可迭代和 迭代器 是不一樣的!可以被next 函式呼...