Hàm iter () trong Python trả về một trình vòng lặp cho đối tượng đã cho.
Các iter()
chức năng tạo ra một đối tượng có thể được lặp một yếu tố cùng một lúc.
Các đối tượng này rất hữu ích khi kết hợp với các vòng lặp như vòng lặp for, vòng lặp while.
Cú pháp của iter()
hàm là:
iter (object, sentinel)
iter () Tham số
Các iter()
chức năng có hai tham số:
- đối tượng - đối tượng có trình lặp phải được tạo (có thể là bộ, bộ, v.v.)
- sentinel (tùy chọn) - giá trị đặc biệt được sử dụng để biểu thị phần cuối của một chuỗi
Trả về giá trị từ iter ()
- Các
iter()
hàm trả về một đối tượng iterator cho đối tượng nhất định. - Nếu đối tượng do người dùng xác định không triển khai
__iter__()
, và__next__()
hoặc__getitem()__
,TypeError
ngoại lệ được đưa ra. - Nếu tham số sentinel cũng được cung cấp,
iter()
trả về một trình lặp cho đến khi không tìm thấy ký tự sentinel.
Ví dụ 1: Làm việc của Python iter ()
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Đầu ra
aeiou
Ví dụ 2: iter () cho các đối tượng tùy chỉnh
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Đầu ra
1 2 3 Traceback (lần gọi gần đây nhất): Tệp "", dòng 23, trong Tệp "", dòng 11, trong __next__ StopIteration
Ví dụ 3: iter () với tham số sentinel
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Đầu ra
2 4 8
Ở đây, chúng tôi đã triển khai một đối tượng có thể lặp lại tùy chỉnh mà không cần StopIteration
điều kiện.
Tuy nhiên, chúng ta có thể sử dụng iter()
phương thức với sentinel
tham số để dừng quá trình lặp. Nếu giá trị trả về từ __next__()
bằng sentinel
, StopIteration
sẽ được nâng lên, ngược lại, giá trị sẽ được trả về.
Đề xuất đọc: Trình lặp lại Python