Iterable là loại đối tượng là tập hợp các phần tử khác. Ví dụ list và tuple là Iterables. Nó tương tự như bất kỳ lớp bộ sưu tập nào trong Java hoặc lớp chứa trong C++. Trong Python khi hàm iter[] được gọi trên một đối tượng Iterable thì nó trả về một Iterator, có thể được sử dụng để lặp qua các phần tử bên trong Iterable
Trong Python, một lớp được gọi là Iterable nếu nó đã quá tải phương thức ma thuật __iter__[]. Hàm này phải trả về một đối tượng Iterator
Iterator là gì?
Iterator là một đối tượng cho phép chúng ta lặp qua vùng chứa được liên kết hoặc một đối tượng Iterable
Trong Python, một lớp được gọi là Iterator nếu nó đã quá tải phương thức ma thuật __next__[]. Hàm này phải trả về một phần tử tại một thời điểm nhất định và sau đó tăng con trỏ bên trong thành tiếp theo
quảng cáo
Lặp lại là gì?
Lặp lại là một quá trình lặp lại trên tất cả các phần tử của Iterable bằng cách sử dụng đối tượng Iterator. Trong python chúng ta có thể thực hiện phép lặp bằng vòng lặp for hoặc vòng lặp while
Hãy hiểu bằng một số ví dụ,
Lặp lại danh sách [Iterable] bằng Iterator
Giả sử chúng ta có một danh sách các số i. e
# List of Numbers listOfNum = [11, 12, 13, 14, 15, 16]
List trong python là một đối tượng Iterable vì nó đã quá tải hàm __iter__[] trả về một Iterator. Để lấy đối tượng Iterator từ đối tượng Iterable chúng ta cần gọi hàm iter[]. Hãy lấy đối tượng Iterator từ danh sách i. e.
______1
Nó trả về một đối tượng list_iterator về cơ bản là một Iterator vì nó đã quá tải hàm __next__[]. Bạn cũng có thể kiểm tra loại Iterator trả về i. e.
______2
Đầu ra.
Bây giờ, hãy sử dụng đối tượng iterator này để lặp lại nội dung của danh sách i. e.
______4
Đầu ra.
______5
Ở đây, chúng ta đã gọi đi gọi lại hàm next[] trên đối tượng Iterator để lặp lại tất cả các phần tử của nó.
Nó đã hoạt động như thế nào?
Để lấy giá trị tiếp theo của Iterable, hãy gọi hàm next[] trên đối tượng iterator của nó. Nó sẽ trả về giá trị tiếp theo của Iterable. Tiếp tục gọi hàm next[] này để lấy từng phần tử của iterable. Khi iterator đi đến cuối các phần tử trong iterable thì nó sẽ báo lỗi StopIteration
Điều gì tương đương với hasnext[] trong Python Iterators ?
Như đã giải thích ở trên hàm next[] tương đương với hàm hasnext[] trong Python. Nó được sử dụng để lấy giá trị tiếp theo từ Iterable
Lặp lại một Iterable [danh sách] bằng cách sử dụng vòng lặp for
Python có một vòng lặp for kỳ diệu sử dụng Iterator bên trong để lặp qua đối tượng Iterable. Ví dụ: chúng ta cũng có thể lặp qua các phần tử trong danh sách [Có thể lặp lại] bằng cách sử dụng vòng lặp for i. e
# Iterate over the Iterable [list] using for loop for elem in listOfNum: print[elem]
Đầu ra.
______5
vòng lặp for bên trong cũng làm điều tương tự, nó tìm nạp Iterator từ Iterable và sau đó sử dụng nó để lặp lại các phần tử trong Iterable. Nhưng nó cung cấp một dạng ngắn gọn, chúng ta không cần phải viết vòng lặp while lớn và tự bắt lỗi StopIteration, nó làm tất cả những điều đó trong nội bộ cho chúng ta.
Tương tự, chúng ta có thể lặp qua các Iterable khác như danh sách, tuple và các Iterator tùy chỉnh khác
Một số điểm quan trọng
Hàm iter[] trong Python
Khi hàm iter[] được gọi thì nó gọi hàm __iter__[] trên đối tượng được truyền và trả về giá trị do nó trả về. Về cơ bản, một lớp đã quá tải hàm __iter__[] được gọi là Iterable và dự kiến nó sẽ trả về một đối tượng Iterator
hàm next[] trong Python
Khi hàm next[] được gọi thì nó gọi hàm __next__[] trên đối tượng được truyền và trả về giá trị do nó trả về. Về cơ bản, các đối tượng Iterator quá tải hàm __next__[] và nó trả về giá trị tiếp theo từ đối tượng Iterable được liên kết
Trong bài viết tiếp theo, chúng ta sẽ thảo luận về cách làm cho lớp tùy chỉnh của chúng ta có thể lặp lại và viết lớp Iterator riêng để lặp lại các phần tử trong lớp có thể lặp lại của chúng ta
Ví dụ hoàn chỉnh như sau
def main[]: # List of Numbers listOfNum = [11, 12, 13, 14, 15, 16] print['*** Iterate over the list using Iterator ***'] # get the Iterator of list listIterator = iter[listOfNum] # Check type of iterator returned by list print[type[listIterator]] # Itearte over the all elements in list using iterator while True: try: # Get next element from list using iterator object elem = next[listIterator] # Print the element print[elem] except StopIteration: break print['*** Iterate over the list using for loop ***'] # Iterate over the Iterable [list] using for loop for elem in listOfNum: print[elem] if __name__ == '__main__': main[]
Đầu ra.
______9
Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python
- Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
- Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
- Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị Chuỗi
- Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
- Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
- Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
- Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
- Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên nhãn
- Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
- Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
- Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
- Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
- Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
- Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
- Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
- Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?
Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học
Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với PythonHãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay