Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah iterator Python dan cara menggunakannya
Iterators ialah objek yang mengandungi bilangan nilai yang boleh dikira.
Iterators ialah objek boleh lelaran, yang bermaksud anda boleh lelaran ke atas semua nilai.
Secara teknikal, dalam Python, iterator ialah objek yang melaksanakan protokol iterator, yang mengandungi kaedah iter() dan next().
Senarai, tupel, kamus dan set ialah semua objek boleh lelaran. Ia adalah bekas boleh lelaran yang mana anda boleh mendapatkan Iterator.
Semua objek ini mempunyai kaedah iter() untuk mendapatkan iterator:
Instance
Kembalikan iterator daripada tuple, dan cetak Setiap nilai:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Instance yang sedang berjalan
apple banana cherry
Traversing iterator
Kita juga boleh menggunakan gelung for Traverse objek lelaran:
InstanceLelaran pada nilai tuple:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
b a n a n aInstance
Lelaran ke atas aksara dalam rentetan:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Jalankan instance
python_iterator_loop_1.py apple banana cherry
Petua: Gelung for sebenarnya mencipta objek iterator dan untuk setiap gelung Jalankan kaedah next().
Mencipta IteratorUntuk mencipta objek/kelas sebagai iterator, kaedah
iter() dan
seterusnya() mesti dilaksanakan untuk objek.
Seperti yang anda pelajari dalam bab Kelas/Objek Python, semua kelas mempunyai fungsi yang dipanggil
inititer() berfungsi sama, anda boleh melakukan operasi (penginisiatifan, dsb.) tetapi mesti sentiasa mengembalikan objek iterator itu sendiri. Kaedah
next() juga membolehkan anda melakukan operasi dan mesti mengembalikan item seterusnya dalam jujukan.
InstanceMencipta lelaran yang mengembalikan nombor, bermula pada 1 dan meningkat sebanyak 1 untuk setiap urutan (mengembalikan 1, 2, 3, 4, 5, dsb. ) :
mystr = "banana" for x in mystr: print(x)
Jalankan instancepython_iterator_loop_2.py
b
a
n
a
n
a
StopIteration
Jika anda mempunyai penyataan next() yang mencukupi, atau gunakannya dalam gelung for, contoh di atas akan diteruskan selama-lamanya. Untuk mengelakkan lelaran daripada mengambil masa selama-lamanya, kita boleh menggunakan pernyataan StopIteration.
Dalam kaedah
seterusnya(), kita boleh menambah syarat penamatan untuk menimbulkan ralat jika lelaran melengkapkan bilangan kali yang ditentukan:
InstanceBerhenti selepas 20 lelaran:
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))
Jalankan instancepython_iterator_create_1.py
1
2
3
4
5
Atas ialah kandungan terperinci Apakah iterator Python dan cara menggunakannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!