Iterator Là Gì

  -  
March 1, 2020March 1, 20trăng tròn Phạm Tâm TháiHọc lập trình4 Comments on Tìm phát âm về Iterable, Iterator với Generator trong Python
*

Khi tìm hiểu bí quyết thực hiện những dạng hình dữ liệucó không ít phần tử như array, list, v.v. trong các ngôn từ thiết kế văn minh,chúng ta thường gặp mặt các từ khóa nlỗi Iterable, Iterator, Enumerator … Dù rằng cácđịnh nghĩa vì chưng các từ khóa này chỉ dẫn không hẳn là phức tạp lắm, mà lại song khichúng đang gây ra “nhức đầu, chóng mặt” cho những thiết kế viên new. Vì vậy, chúngta đã mày mò những khái niệm này một bí quyết chi tiết trong bài viết này.

Bạn đang xem: Iterator là gì

Chúng ta sẽ ban đầu với 1 vấn đề nhập môn: nếu được thử dùng để lập trình sẵn một quãng mã nhằm chú ý tuần từ qua những bộ phận trong một tập hợp các phẩn tử, các bạn sẽ làm cho vắt nào?

Với Python, đấy là quá trình rất dễ dàng, chúng ta đang sử dụng vòng lặp for nlỗi sau:


days = <"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun">for day in days: print(day)
1
2
3
days = <"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun">
for day in days:
print(day)

Tiếp theo, họ sẽ có được một sự việc kháthụ vị: nếu được yêu cầu để triển khai các bước như trên nhưng không thực hiện cấu trúc lặpfor, bạn sẽ có tác dụng cầm cố nào?

Là một lập trình viên, chắc rằng điều đầu tiên chúng ta nghĩ về mang lại là 1 trong vòng lặp tất cả ĐK theo truyền thống cuội nguồn giống như nlỗi đoạn mã dưới đây:


days = <"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun">i = 0while i
1
2
3
4
5
days = <"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun">
i = 0
while i len(days):
print(days)
i += 1

Đây là cú pháp xuất phát điểm từ ngữ điệu C. Tuy nhiên, nếu như áp dụng cấu trúc lặp này trong Pythanh mảnh, họ đã tìm hiểu ra rằng nó chỉ vận động với một vài mẫu mã dữ liệu nhất định nlỗi menu (list hoặc mảng), string (chuỗi) dẫu vậy lại không hoạt động được cùng với một số phong cách dữ liệu như là dictionary (từ điển) hoặc set (tập hợp). Ví dụ nlỗi khi sử dụng cấu tạo lặp này với 1 set, chúng ta vẫn gặp mặt lỗi nlỗi sau:


1
2
3
4
5
6
7
8
9
... print(days)
... i += 1
...
Tracebaông chồng (most recent call last):
File "", line 2, in module>
TypeError: "set" object is not subscriptable

Theo lưu ý của thông báo lỗi tự đoạn mãbên trên, vụ việc là vì loại tài liệu “set” ko cung cấp đến index (chỉ mục). Nếuđối chiếu kỹ hơn, bọn họ đang thấy rằng các kiểu dữ liệu có không ít phẩn tử tất cả sẵnvào Pybé nhỏ được tạo thành hai nhóm: dữ liệu giao diện tuần trường đoản cú (sequence) và tập hợp(collection). Về bản chất, những tài liệu giao diện sequence là những dữ liệu mà các phầntử trong số ấy được lập chỉ mục hoặc đọc nôm na là được khắc số trang bị từ bỏ từ bỏ 0 mang lại n(cùng với n là độ dài của group trừ đi 1). Còn các tài liệu hình dáng tập hợp là các dữ liệukhông tồn tại chỉ mục. Trong Pykhông lớn, danh sách (list), chuỗi (string) và tuples lànhững thứ hạng dữ liệu thuộc team trước tiên. Còn những vẻ bên ngoài tài liệu trường đoản cú điển(dictionary), tập hòa hợp (set) và một số loại dữ liệu không giống nằm trong team thứ hai.

Xem thêm: Game Tam Sinh Tam Thế Thập Lý Đào Hoa Mobile Giới Thiệu Phiên Bản Quốc Tế

Vậy làm sao bạn cũng có thể tạo thành một cấutrúc lặp rất có thể thừa qua giới hạn này cùng hoàn toàn có thể vận dụng cho cả nhị nhómsequence lẫn collection? Để làm được điều này, bọn họ đề xuất đọc về qui định duyệttuần từ qua những tư tưởng iterable cùng iterator.

Iterable là gì?

Hiểu một biện pháp dễ dàng và đơn giản, một iterable trongPydong dỏng là một trong những đối tượng người sử dụng chất nhận được bạn để mắt tới qua những thành phần của chính nó với vòng lặpfor.

Xem thêm: Torch Là Gì ? Nghĩa Của Từ Torch Trong Tiếng Việt Xét Nghiệm Torch Trung Tâm Xét Nghiệm Genmedic

Các đối tượng người tiêu dùng iterable không cần phải bao gồm chỉmục, không cần phải bao gồm độ nhiều năm, thậm chí không nhất thiết phải hữu hạn. đặc điểm tươngđồng tốt nhất của các đối tượng người tiêu dùng này là bọn chúng bao gồm chứa đựng nhiều hơn một trong những phần tử.