Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các kiểu Iterator trong Python


Trong Python có khái niệm iteration (lặp) trên các container. Iterator có hai phương thức riêng biệt. Sử dụng các hàm này, ta có thể dùng lớp do người dùng định nghĩa để hỗ trợ iteration. Các hàm là __iter__() và __next__().

Phương thức __iter__()

Phương thức __iter__() trả về đối tượng iterator. Nếu một lớp hỗ trợ nhiều loại iteration, có thể có các phương thức khác để làm nhiệm vụ khác.

Phương thức __next__()

Phương thức __next__() trả về phần tử tiếp theo từ container. Khi hết phần tử, nó ném ngoại lệ StopIteration.

Ví dụ mã

class PowerIter:
    # Trả về x ^ x với x trong range 1 đến max
    def __init__(self, max=0):
        self.max = max  # Giới hạn max của iterator
    def __iter__(self):
        self.term = 0
        return self
    def __next__(self):
        if self.term <= self.max:
            element = self.term ** self.term
            self.term += 1
            return element
        else:
            raise StopIteration  # Khi vượt quá max, ném exception

powIterObj = PowerIter(10)
powIter = iter(powIterObj)
for i in range(10):
    print(next(powIter))

Kết quả

1
1
4
27
256
3125
46656
823543
16777216
387420489