Python零基礎學習筆記(二十二)—— 迭代器


from collections import Iterable, Iterator

'''
可迭代對象:可以直接作用於for循環的對象統稱爲可迭代對象
(Iterable) 可以用isinstance()去判斷一個對象是否是Iterable對象

可以直接作用於for的數據類型一般分兩種
1、集合類數據類型:list、 tuple、 dict、 set、 string
2、是generator,包括生成器和帶yield的generator function

'''

print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance({},Iterable))
print(isinstance("",Iterable))
print(isinstance((x for x in range(10)),Iterable))
print(isinstance(1,Iterable))

'''
迭代器:不但可以作用於for循環,還可以被next()函數不斷的調用並返回下一個值
直到最後拋出一個StopIteration錯誤表示無法繼續返回下一個值

可以被next()函數調用並不斷返回下一個之的對象稱爲迭代器
(Iterator對象)

可以用isinstance()函數判斷一個對象是否是可迭代對象
'''

print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance("",Iterator))
print(isinstance((x for x in range(10)),Iterator))

l = (x for x in range(4))
print(l)
print(next(l))
print(next(l))
print(next(l))
print(next(l))

lq = (x for x in [1, 2, 3, 5])
print(next(lq))
print(next(lq))
print(next(lq))
print(next(lq))
#同理tuple、dict、set、string都可以

#轉換成Iterator對象
a = iter([2, 4, 6])
print(next(a))
print(next(a))
print(next(a))
print(isinstance((a), Iterator))

endstr = "end"
str = ""
for line in iter(input, endstr):
    str += line + "\n"
print(str)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章