Python: Python Iterator


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Iterator là một đối tượng đơn giản, nó có thể được lặp lại đến giới hạn nhất định hoặc lặp không có giới hạn. Nó có thể cho phép người dùng truy cập hoặc duyệt qua tất cả các mục được thu thập mà không cần bất kỳ kiến ​​thức nào trước đó.

Python Iterator đã được triển khai bằng cách sử dụng công cụ trình lặp, nó bao gồm hai phương thức là __iter__()__next__().

1. __iter__(): Phương thức này trả về một đối tượng trình lặp.

2. __next__(): Phương thức này trả về phần tử tiếp theo trong chuỗi của một đối tượng

Trước khi thảo luận về các phương thức này, chúng ta sẽ tìm hiểu ít nhiều về cách thức lặp tiêu chuẩn.

LẤY VÍ DỤ VÒNG LẶP FOR

Ở đây chúng ta xét một danh sách các phần tử kiểu int:

data = [1, 2, 3, 4, 5]

for i in data:
    print("i is:", i)

Kết quả:

1

2

3

4

5

Bây giờ chúng ta có thể tìm hiểu kỹ lưỡng xem những gì đã xảy ra:

  • Khi chúng ta làm việc với các vòng lặp nội bộ, nó sẽ sử dụng các phương thức __iter__() và __next__(), ở đây __iter__() sẽ lặp lại từng mục một và __next__() sẽ in các mục tiếp theo được thu thập.

Bây giờ bên dưới chúng ta sẽ trình bày cách sử dụng iter và next.

 >>> data=[1,2,3,4,5]

>>> d_obj=iter(data)

>>> next(d_obj)

1

>>> next(d_obj)

2

>>> next(d_obj)

3

>>> next(d_obj)

4

>>> next(d_obj)

5

>>> next(d_obj)

Traceback (most recent call last):

  File “<stdin>”, line 1, in <module>

StopIteration

>>>

DƯỚI ĐÂY LÀ BIỂU DIỄN SƠ ĐỒ CỦA VÍ DỤ TRÊN:

Sơ đồ biểu diễn hoạt động của vòng lặp thông thường

TRIỂN KHAI ITERATOR DO NGƯỜI DÙNG ĐỊNH NGHĨA

Ở đây, chúng ta sẽ tạo iterartor do ta định nghĩa với sự trợ giúp của các phương thức __next__() và __iter__().

Ví dụ:

class OwnIterator:

    # User defined implementation for Own Iterator

    def __init__(self, num=0):

        self.number = num

    def __iter__(self):

        self.x = 1

        return self

    def __next__(self):

        if self.x <= self.number:

            own_iterator = self.x

            self.x += 1

            return own_iterator

        else:

            raise StopIteration


for x in OwnIterator(10):
    print("Num is:", x)

Kết quả:

Num is: 1
Num is: 2
Num is: 3
Num is: 4
Num is: 5
Num is: 6
Num is: 7
Num is: 8
Num is: 9
Num is: 10

TRIỂN KHAI TRÌNH LẶP VÔ HẠN DO NGƯỜI DÙNG ĐỊNH NGHĨA

class OwnIterator:
    # Class to implement iterator protocol

    def __init__(self, num=0):
        self.num = num

    def __iter__(self):
        self.x = 1

        return self

    def __next__(self):
        own_iterator = self.x

        self.x += 1

        return own_iterator


for x in OwnIterator():

    if x < 5:

        print("Num is:", x)

    else:

        break

Kết quả:

Num is: 1
Num is: 2
Num is: 3
Num is: 4

» Tiếp: Bài tập cơ bản
« Trước: super()
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!