from collections.abc import iterable
class
demo
(object):
def__init__
(self,x)
: self.x = x
self.count =
0def
__iter__
(self)
:# 只要重寫了 __iter__ 方法就是乙個可迭代物件
# f = foo()
return self
def__next__
(self)
:# 每次 for...in 都會呼叫 __next__方法,獲取返回值
self.count +=
1if self.count <= self.x:
return self.count -
1else
:raise stopiteration # 讓迭代器停止
d = demo(
100)
i = d.__iter__(
)i.__next__(
)i =
iter
(d)# 內建函式 iter 可以獲取到乙個可迭代物件的迭代器
print
(next
(i))
print
(next
(i))
print
(next
(i))
print
(d.__iter__(
).__next__())
# print(d.__iter__().__next__())
# print(d.__iter__().__next__())
# print(d.__iter__().__next__())
# print(d.__iter__().__next__())
# print(d.__iter__().__next__())
結果
123
4process finished with exit code 0
python 迭代器 筆記
1.凡事可用於for迴圈的物件都是iterable型別物件 2.凡事可做用於next 函式的物件都是iterator型別物件,他們表示乙個惰性計算的序列 3.集合資料型別list dicr str等是iterable物件不是iterator物件,但是可以通過呼叫iter 函式獲得乙個iterator...
Python筆記 迭代器
我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。1 可以...
python迭代器筆記
迭代器的優點 迭代器訪問與for迴圈訪問非常相似,但是也有不同之處。對於支援隨機訪問的資料結構如元組和列表,迭代器並無優勢。因為迭代器在訪問的時候會丟失資料索引值,但是如果遇到無法隨機訪問的資料結構如集合時,迭代器是唯一訪問元素的方式 迭代器僅僅在訪問到某個元素時才使用該元素。在這之前,元素可以不存...