Apakah iterator Python dan cara menggunakannya

PHPz
Lepaskan: 2023-05-12 13:19:06
ke hadapan
1096 orang telah melayarinya

Python Iterator

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().

Iterable VS Iterable object (Iterable)

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))
Salin selepas log masuk

Instance yang sedang berjalan

apple
banana
cherry
Salin selepas log masuk

Traversing iterator

Kita juga boleh menggunakan gelung for Traverse objek lelaran:

Instance

Lelaran 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))
Salin selepas log masuk

Jalankan instance

b
a
n
a
n
a
Salin selepas log masuk

Instance

Lelaran ke atas aksara dalam rentetan:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
Salin selepas log masuk

Jalankan instance

python_iterator_loop_1.py
apple
banana
cherry
Salin selepas log masuk

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

init

() yang membolehkan anda melakukan beberapa permulaan semasa mencipta objek. Kaedah

iter() 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.

Instance

Mencipta 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)
Salin selepas log masuk

Jalankan instance

python_iterator_loop_2.py
b
a
n
a
n
a
Salin selepas log masuk
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:

Instance

Berhenti 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))
Salin selepas log masuk

Jalankan instance

python_iterator_create_1.py
1
2
3
4
5
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah iterator Python dan cara menggunakannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!