python中的iter迭代

2021-10-06 06:52:16 字數 2453 閱讀 5070

具體解釋了怎麼用迭代,怎樣用迭代,怎樣轉換成迭代,可以看看

(一)

from collections.abc import iterable

from collections.abc import iterator

import time

class person(object):

def __init__(self):

self.names = list()

self.current_num = 0

def add_person(self,name):

def __iter__(self):

#pass

return personsiterator(self)

class personsiterator(object):

def __init__(self,obj):

self.obj = obj

self.current_num = 0

def __iter__(self):

pass

def __next__(self):

#pass

#return 12345

if self.current_num < len(self.obj.names):

ret = self.obj.names[self.current_num]

self.current_num += 1

#return self.obj.names[self.current_num]

return ret

else:

raise stopiteration

p1 = person()

p1.add_person('張三')

p1.add_person('李四')

p1.add_person('王五')

p_iter = iter(p1)

while true:

try:

ret = next(p_iter)

print(ret)

except exception:

break

執行結果:

(二)

from collections.abc import iterable

from collections.abc import iterator

import time

class person(object):

def __init__(self):

self.names = list()

self.current_num = 0

def add_person(self,name):

def __iter__(self):

#pass

return personsiterator(self)

class personsiterator(object):

def __init__(self,obj):

self.obj = obj

self.current_num = 0

def __iter__(self):

pass

def __next__(self):

#pass

#return 12345

if self.current_num < len(self.obj.names):

ret = self.obj.names[self.current_num]

self.current_num += 1

#return self.obj.names[self.current_num]

return ret

else:

raise stopiteration

p1 = person()

p1.add_person('張三')

p1.add_person('李四')

p1.add_person('王五')

print(isinstance(p1,iterable)) #判斷是否可以迭代

# iter()的作用是呼叫p1的iter()方法

# next()的作用是呼叫迭代器的next方法

p_iterator = iter(p1)

print(isinstance(p_iterator,iterator)) #判斷是否為迭代器

for temp in p1:

print(temp)

time.sleep(1)

執行結果:

python中迭代器和iter 函式

迭代器是在版本2.2被加入到python的,它為類序列物件提供了乙個類序列的介面。python的迭代無縫地支援序列物件,而且它還允許程式設計師迭代非序列型別,包括使用者定義的物件。迭代器用起來很靈巧,你可以迭代不是序列但表現處序列行為的物件,例如字典的鍵 乙個檔案的行,等等。當你使用迴圈迭代乙個物件...

python中迭代器和iter 函式

迭代器為類序列物件提供了乙個類序列的介面。python的迭代無縫地支援序列物件,而且它還允許程式設計師迭代非序列型別,包括使用者定義的物件。迭代器用起來很靈巧,你可以迭代不是序列但表現處序列行為的物件,例如字典的鍵 乙個檔案的行,等等。迭代器的作用如下 提供了刻擴充套件的迭代器介面 對列表迭代帶來了...

python 迭代器和iter 生成器

什麼是迭代器 一組資料結構 可以利用索引從0開始迭代到續寫的最後乙個條目 我們已經知道可以對list tuple str等型別的資料使用for in 的迴圈語法從其中依次拿到資料進行使用,我們把這樣的過程稱為遍歷,也叫迭代。我們把可以通過for in 這類語句迭代讀取一條資料供我們使用的物件稱之為可...