Danh sách python có phải là trình vòng lặp không?

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 Python

Hã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

Danh sách có thể lặp lại hoặc trình lặp trong Python không?

Danh sách, bộ dữ liệu, từ điển và bộ đều là đối tượng có thể lặp lại . Chúng là các thùng chứa có thể lặp lại mà bạn có thể lấy một trình vòng lặp từ.

Cái nào không phải là trình vòng lặp trong Python?

Các trình lặp có phương thức __next__() trả về mục tiếp theo của đối tượng. Ghi chú. Mỗi iterator cũng là một iterable, nhưng không phải iterable nào cũng là iterator trong Python. Ví dụ: một danh sách có thể lặp lại nhưng danh sách không phải là một trình lặp.

Điều gì được coi là lặp Python?

Việc thực thi lặp đi lặp lại cùng một khối mã được gọi là phép lặp. Có hai kiểu lặp. Lặp lại xác định, trong đó số lần lặp lại được chỉ định rõ ràng trước. Lặp lại vô thời hạn, trong đó khối mã thực thi cho đến khi một số điều kiện được đáp ứng.

Làm cách nào để chuyển đổi danh sách thành trình vòng lặp trong Python?

Bạn có thể lấy một trình lặp từ bất kỳ khả năng lặp nào bằng cách gọi hàm lặp tích hợp sẵn trên khả năng lặp đó . Bạn có thể sử dụng chức năng tiếp theo được tích hợp sẵn trên một trình vòng lặp để lấy mục tiếp theo từ nó (bạn sẽ nhận được một ngoại lệ StopIteration nếu không còn mục nào nữa).