Python iter ()

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()__, TypeErrorngoạ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 sentineltham số để dừng quá trình lặp. Nếu giá trị trả về từ __next__()bằng sentinel, StopIterationsẽ đượ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

thú vị bài viết...