Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan pertama kepada iterator dalam Python

Pengenalan pertama kepada iterator dalam Python

WBOY
WBOYasal
2023-06-09 21:46:43709semak imbas

Python ialah bahasa pengaturcaraan peringkat tinggi dengan kemudahan penggunaan yang sangat baik dan kebolehbacaan kod. Jenis data terbina dalam Python sangat berkuasa, dan salah satunya, Iterator, juga merupakan jenis data yang sangat penting.

Lelaran ialah objek yang boleh melintasi objek kontena Ia boleh menyediakan kaedah untuk mengakses elemen kontena tanpa mendedahkan pelaksanaan tertentu. Objek bekas boleh menjadi senarai, tupel, kamus, set, dsb. Iterator mengekalkan keadaan dalaman yang menyimpan kedudukan semasa objek kontena dan maklumat keadaan lain yang berkaitan dengan traversal. Apabila kita perlu melintasi objek bekas, kita boleh menggunakan lelaran untuk mendapatkan elemen.

Dalam Python, mana-mana objek boleh menjadi iterator selagi ia melaksanakan kaedah __iter__() dan __next__(). Kaedah __iter__() mengembalikan objek iterator dan memulakan subskrip objek semasa kepada 0. Kaedah __next__() digunakan untuk mengembalikan elemen dalam objek bekas Apabila tiada elemen boleh dikembalikan, pengecualian StopIteration akan dilemparkan. Berikut ialah contoh mudah:

class MyIterator:
    def __init__(self, container):
        self.container = container
        self.index = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.index >= len(self.container):
            raise StopIteration
        result = self.container[self.index]
        self.index += 1
        return result

my_list = [1, 2, 3]
my_iterator = MyIterator(my_list)
for item in my_iterator:
    print(item)

Dalam kod di atas, kami telah menyesuaikan kelas iterator bernama MyIterator. Kaedah __iter__() dan __next__() dilaksanakan dalam kelas ini. Kaedah __iter__() mengembalikan kendiri objek iterator bagi objek semasa, manakala kaedah __next__() digunakan untuk mengembalikan elemen dalam objek kontena my_list. Apabila semua elemen telah dilalui, pengecualian StopIteration akan dilemparkan, sekali gus menamatkan lelaran.

Dalam Python, iterator sangat biasa digunakan kerana mereka bukan sahaja boleh melintasi elemen dalam objek kontena, tetapi juga menjimatkan memori dan sumber pengkomputeran serta meningkatkan prestasi program. Berikut ialah beberapa fungsi dan penyataan lelaran terbina dalam yang biasa digunakan:

  1. fungsi iter(): Menukar objek boleh lelar kepada pulangan lelaran.
my_list = [1, 2, 3]
my_iterator = iter(my_list) # 将列表对象转化为迭代器对象
for item in my_iterator:
    print(item)
  1. fungsi next(): Panggil kaedah __next__() lelaran untuk mendapatkan elemen seterusnya dalam objek bekas.
my_list = [1, 2, 3]
my_iterator = iter(my_list) # 将列表对象转化为迭代器对象
print(next(my_iterator)) # 输出1
print(next(my_iterator)) # 输出2
print(next(my_iterator)) # 输出3
  1. fungsi enumerate(): mengembalikan kedua-dua subskrip dan elemen.
my_list = ['apple', 'banana', 'orange']
for index, item in enumerate(my_list):
    print(index, item)
# 输出: 0 apple
#       1 banana
#       2 orange
  1. fungsi zip(): Kembalikan berbilang iterator atau objek boleh lelar ke dalam tuple.
my_list1 = ['apple', 'banana', 'orange']
my_list2 = [1, 2, 3]
for item in zip(my_list1, my_list2):
    print(item)
# 输出: ('apple', 1)
#       ('banana', 2)
#       ('orange', 3)
  1. dalam pernyataan: digunakan untuk menentukan sama ada elemen berada dalam objek bekas.
my_list = [1, 2, 3]
if 2 in my_list:
    print("2 is in my_list")
else:
    print("2 is not in my_list")
# 输出: 2 is in my_list

Dalam pengaturcaraan sebenar, jika anda perlu melintasi objek kontena, cuba gunakan iterator untuk melintasi dan elakkan terus menggunakan rujukan subskrip untuk mendapatkan elemen, kerana ini akan menyebabkan pembaziran memori dan sumber pengkomputeran dan memperlahankan prestasi program. Ciri iterator adalah untuk menjana elemen atas permintaan dan membebaskan memori atas permintaan Oleh itu, dalam pemprosesan set data yang besar, menggunakan iterator boleh meningkatkan kecekapan program.

Secara umum, iterator ialah konsep yang sangat penting dalam Python Kita perlu memahami pelaksanaannya dan sintaks biasa, dan menguasai kemahiran menggunakan iterator untuk menulis program yang cekap, ringkas dan mudah diselenggara.

Atas ialah kandungan terperinci Pengenalan pertama kepada iterator dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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