Menu
CoddyTech

Hàm iter() và next()

Bài học 2 trên 13 trong khóa học Trình lặp trong Python của Coddy.

Trong Python, các hàm iter() và next() là nền tảng để làm việc với iterator. Hãy cùng tìm hiểu các hàm này và xem cách dùng chúng để tạo và thao tác với iterator cơ bản.

Hàm iter()

Hàm iter() dùng để tạo một đối tượng iterator từ một đối tượng có thể lặp. Cú pháp cơ bản là:

iter(iterable)

Khi được gọi với một đối tượng có thể lặp, iter() trả về một đối tượng iterator mà bạn có thể dùng để truy cập lần lượt từng phần tử của đối tượng đó.

Hàm next()

Hàm next() dùng để lấy phần tử tiếp theo từ một iterator. Cú pháp cơ bản là:

next(iterator)

Mỗi lần gọi next() với một iterator, hàm sẽ trả về phần tử tiếp theo trong dãy. Nếu không còn phần tử nào, hàm sẽ phát sinh ngoại lệ StopIteration.

Sử dụng iter() và next()

Hãy xem cách các hàm này hoạt động cùng nhau:

# Tạo một danh sách (đối tượng có thể lặp)
fruits = ['apple', 'banana', 'cherry']

# Tạo một đối tượng lặp từ danh sách
fruit_iterator = iter(fruits)

# Dùng next() để lấy các phần tử từ đối tượng lặp
print(next(fruit_iterator))  # Đầu ra: apple
print(next(fruit_iterator))  # Đầu ra: banana
print(next(fruit_iterator))  # Đầu ra: cherry
# print(next(fruit_iterator))  # Lệnh này sẽ gây ra StopIteration

Trong ví dụ này, chúng ta tạo iterator fruit_iterator từ danh sách fruits bằng iter(). Sau đó, chúng ta dùng next() để lấy từng phần tử từ iterator.

Tạo iterator tùy chỉnh cơ bản

Bạn cũng có thể tự tạo iterator bằng cách triển khai các phương thức __iter__() và __next__() trong một lớp:

class CountUp:
    def __init__(self, start, end):
        self.current = start
        self.end = end
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current > self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

# Sử dụng bộ lặp tùy chỉnh
counter = CountUp(1, 3)
print(next(counter))  # Đầu ra: 1
print(next(counter))  # Đầu ra: 2
print(next(counter))  # Đầu ra: 3

Iterator tùy chỉnh CountUp này đếm từ số bắt đầu đến số kết thúc. Phương thức __iter__() trả về chính đối tượng iterator, còn phương thức __next__() xác định cách lấy giá trị tiếp theo.

Hiểu rõ iter() và next() là điều thiết yếu khi làm việc với iterator trong Python, giúp bạn tạo và thao tác với các dãy dữ liệu một cách hiệu quả.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Dễ

Tạo một iterator sinh ra dãy số chẵn đến một giới hạn cho trước. Dùng các hàm iter() và next() để triển khai iterator này.

Bạn được cung cấp:

  • Một số nguyên limit làm đầu vào

Iterator của bạn cần:

  • Sinh các số chẵn bắt đầu từ 2
  • Dừng khi đạt đến hoặc vượt quá giới hạn đã cho

In mỗi số chẵn được sinh ra trên một dòng mới.

Đầu vào sẽ được cung cấp dưới dạng chuỗi biểu diễn một số nguyên.

Tự làm thử

# Đọc đầu vào
limit = int(input())

# TODO: Viết code tại đây
# Tạo bộ lặp số chẵn bằng iter() và next()

# Ví dụ về cách in kết quả
# print(next_even_number)

Tất cả bài học trong Trình lặp trong Python

Tự luyện tập: Trình biên dịch Python online