Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah iterator Python dan cara menggunakannya

Apakah iterator Python dan cara menggunakannya

PHPz
PHPzke hadapan
2023-05-12 13:19:061146semak imbas

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

Instance yang sedang berjalan

apple
banana
cherry

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

Jalankan instance

b
a
n
a
n
a

Instance

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

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)

Jalankan instance

python_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:

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

Jalankan instance

python_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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam