Hàm iter() trong Python

Thứ tư - 31/07/2019 07:40

Tiếp tục với chủ đề các hàm tích hợp sẵn trong Python, bài viết sẽ giới thiệu cho các bạn về hàm iter() với cú pháp, cách sử dụng cũng như các ví dụ cụ thể. Mời bạn đọc theo dõi.

Hàm iter() được tích hợp sẵn trong Python, trả về một iterator của đối tượng đã cho.

Đối tượng được tạo ra từ iter() có thể lấy từng phần tử của nó tại mỗi thời điểm nhất định, rất hữu ích khi kết hợp với các vòng lặp for, while.

Cú pháp hàm iter() trong Python:

iter(object[, sentinel])
 

 

Các tham số của hàm iter()

Hàm iter() có 2 tham số:

  • object: đối tượng muốn tạo iterator, có thể là set, tuples...
  • sentinel: giá trị đặc biệt được sử dụng để thể hiện phần cuối của chuỗi.

Tùy thuộc vào tham số được truyền, iter() sẽ có những thuộc tính khác nhau như sau:

Tham số object Tham số sentinel Mô tả
Bộ đối tượng (set, tuple)  Không có Tạo iterator cho bộ đối tượng
Đối tượng do người dùng xác định (Đối tượng tùy chỉnh - Custom object)  Không có

- thực thi phương thức __iter__() and __next__().
- thực thi phương thức __getitem __ () với các đối số nguyên bắt đầu từ 0.

Đối tượng do người dùng xác định (Custom object) không triển khai __iter__(), __next() hoặc __getitem__()  Không có  Sinh ra ngoại lệ TypeErrorexception
Đối tượng Callable  Được cung cấp Hàm trả về đối tượng iterator có thể gọi đối tượng không có đối số cho mỗi lần gọi đến phương thức __next __() của nó, nếu Sentinel được tìm thấy, ngoại lệ StopIteration exception sẽ được sinh ra.

Giá trị trả về từ iter()

Hàm iter() trả về đối tượng iterator cho tham số được truyền vào, có thể lặp qua từng phần tử của nó tại mỗi thời điểm nhất định

Trong trường hợp tham số thứ hai sentinel được truyền, hàm trả về đối tượng iterator có thể gọi callable object cho đến khi không tìm thấy ký tự sentinel.

 

Ví dụ 1: iter() hoạt động như thế nào?

# danh sach nguyen am
 # viet boi Quantrimang.com
 nguyenam = ['a', 'e', 'i', 'o', 'u']
 nguyenamIter = iter(nguyenam)
 # in ra 'a'
 print(next(nguyenamIter))
 # in ra 'e'
 print(next(nguyenamIter))
 # in ra 'i'
 print(next(nguyenamIter))
 # in ra 'o'
 print(next(nguyenamIter))
 # in ra 'u'
 print(next(nguyenamIter))

Khi bạn chạy chương trình, output trả về sẽ là:

a
 e
 i
 o
 u

Ví dụ 2: iter() hoạt động với custom object

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
 printNum = PrintNumber(3)
 printNumIter = iter(printNum)
 # in ra '1'
 print(next(printNumIter))
 # in ra '2'
 print(next(printNumIter))
 # in ra '3'
 print(next(printNumIter))
 # sinh ra StopIteration
 print(next(printNumIter))

Chạy chương trình, kết quả trả về là:

1
 2
 3
 StopIteration

Ví dụ 3: iter() hoạt động với callable object có sentinel

with open('mydata.txt') as fp:
     for line in iter(fp.readline, ''):
         processLine(line)

Khi bạn chạy chương trình, Python sẽ mở mydata.txt ở chế độ read.

Sau đó, iter(fp.readline, '') trong vòng lặp for gọi readline (đọc từng dòng trong tệp văn bản) cho đến khi tìm thấy ký tự sentinel '' (chuỗi trống).

Nguồn tin: Quantrimang.com

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập111
  • Máy chủ tìm kiếm1
  • Khách viếng thăm110
  • Hôm nay11,054
  • Tháng hiện tại152,313
  • Tổng lượt truy cập9,858,165
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây