Python 迭代器
- Rajista Doki Python Inheritance
- Sai Doki Python Scope
Python 迭代器
迭代器是一种对象,该对象包含值的可计数数字。
迭代器是可迭代的对象,这意味着您可以遍历所有值。
Daga techniki, a Python, kewaye fariya yana da hukuncin kewaye fariya, wanda ke cikin hukuncin kewaye fariya, wanda ke cikin __iter__()
da __next__()
.
Iterator VS kewaye fariya (Iterable)
List, tuple, dictionary da collection suna da amfani da kewaye fariya. Ana calla su a kewaye fariya, kuma zai iya samun kewaye fariya (Iterator).
Doka doka na wa wa kewaye fariya: iter()
Hukumanci:
Tashin
Ka kewaye fariya daga nau'in fariya, kuma ya bada sabon nau'in fariya:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Kodayake littafin kuma yana da amfani da kewaye fariya, kuma zai iya kafa kewaye fariya:
Tashin
Littafin kuma yana da amfani da kewaye fariya, wanda ke cikin kewaye fariya:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
ka kewaye fariya
A halin yanzu, a kewaye fariya wanda ke cikin kewaye fariya:
Tashin
ka kewaye fariya nau'in fariya:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Tashin
ka kewaye fariya littafin da ke cikin fariya:
mystr = "banana" for x in mystr: print(x)
Tip:for a gudanarwa ka kewaye fariya kuma ya kafa kewaye fariya na fariya ga kowane aiki gudanarwa next()
hukumanci.
ka kewaye fariya
Doni samun object/class a kafin yin samun kaiwa kewaye, ya kamata ina yin amfani da __iter__()
da __next__()
hukumanci.
Daga kamar yadda a ka ta ce ta amfani da Python class/object a babban wasan kwarewa, kowane class su da sunan __init__()
funtan, wanda ka ya kada kafin yin fariya wanda ya kewaye kada a kafin yin samun kaiwa object.
__iter__()
方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。
__next__()
方法也允许您执行操作,并且必须返回序列中的下一个项目。
Tashin
创建一个返回数字的迭代器,从 1 开始,每个序列将增加 1(返回 1、2、3、4、5 等):
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
StopIteration
如果你有足够的 next()
语句,或者在 for 循环中使用,则上面的例子将永远进行下去。
为了防止迭代永远进行,我们可以使用 StopIteration
sauyi.
da __next__()
Dake kuma, idan iteration ya kammala kowane yawan, ake yi imanin yin hanyar zuriyar ra'ayi:
Tashin
A kammala 20 iteration:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
- Rajista Doki Python Inheritance
- Sai Doki Python Scope