Iterators and Iterables and generators

Iterators

iterators là một đối tượng có thể được lặp lại, có nghĩa là bạn có thể duyệt qua tất cả các giá trị.

items = [1, 2, 3, 4, 5]
x = iter(items)
x.__next__()
# output
1

next() sẽ trả về giá trị phần tử tiếp theo hoặc ngoại lệ StopIteration

iterator cũng là iterable

items = [1, 2, 3, 4, 5]
x = iter(items)
for s in x:
    print(s)
# output
1 
2
3
4
5

Iterables

Một đối tượng là iterable nghĩa là nó có thể lặp qua, hiểu là một iterable thì:

  1. Có thể lặp qua a được, tức có thể viết *“for x in a” *

  2. gọi iter(a), sẽ trả về một iterator

  3. Có phương thức __iter__ cũng trả về một iterator, hoặc đôi khi có phương thức \getitem\ nếu a thuộc nhóm dữ liệu tuần tử có thể truy cập phần tử theo chỉ số index đã nói ở trên.

items = [1, 2, 3, 4, 5]
for item in items:
    print(item)

Generators

generator hay gọi là hàm generator, cho phép bạn tạo ra một hàm hoạt động tương tự như một iterator, tức là nó cũng là iterable và có thể dùng với vòng lặp for.

Cách tạo gennerators

def list_n_generator(n):
    num = 0
    while num < n:
        yield num
        num += 1
a = (x for x in [1, 2, 3, 4, 5)

Last updated