Hướng dẫn what is an iterator in python? - trình vòng lặp trong python là gì?

Tererators in Python

Tererators ở khắp mọi nơi trong Python. Chúng được thực hiện một cách tao nhã trong các vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1, toàn bộ, máy phát điện, v.v. nhưng được ẩn trong tầm nhìn rõ ràng.

Iterator in Python chỉ đơn giản là một đối tượng có thể được lặp lại. Một đối tượng sẽ trả về dữ liệu, một phần tử tại một thời điểm.

Về mặt kỹ thuật, một đối tượng iterator Python phải thực hiện hai phương pháp đặc biệt,

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3, gọi chung là giao thức Iterator.iterator object must implement two special methods,
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 and
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3, collectively called the iterator protocol.

Một đối tượng được gọi là ITable nếu chúng ta có thể nhận được một trình lặp từ nó. Hầu hết các thùng chứa tích hợp trong Python như: list, tuple, chuỗi, vv là lặp đi lặp lại.iterable if we can get an iterator from it. Most built-in containers in Python like: list, tuple, string etc. are iterables.

Hàm

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
4 (lần lượt gọi phương thức
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2) trả về trình lặp từ chúng.


Lặp lại thông qua một trình lặp

Chúng tôi sử dụng chức năng

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
6 để lặp thủ công tất cả các mục của trình lặp. Khi chúng tôi đạt đến kết thúc và không còn dữ liệu nào được trả về, nó sẽ tăng ngoại lệ
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
7. Sau đây là một ví dụ.

# define a list
my_list = [4, 7, 0, 3]

# get an iterator using iter()
my_iter = iter(my_list)

# iterate through it using next()

# Output: 4
print(next(my_iter))

# Output: 7
print(next(my_iter))

# next(obj) is same as obj.__next__()

# Output: 0
print(my_iter.__next__())

# Output: 3
print(my_iter.__next__())

# This will raise error, no items left
next(my_iter)

Đầu ra

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration

Một cách thanh lịch hơn để tự động lặp lại là bằng cách sử dụng vòng lặp cho. Sử dụng điều này, chúng tôi có thể lặp lại bất kỳ đối tượng nào có thể trả về trình lặp, ví dụ như danh sách, chuỗi, tệp, v.v.

>>> for element in my_list:
...     print(element)
...     
4
7
0
3

Làm việc cho vòng lặp cho các trình lặp lại

Như chúng ta thấy trong ví dụ trên, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 có thể tự động lặp qua danh sách.

Trong thực tế, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 có thể lặp lại trên bất kỳ điều đó. Chúng ta hãy xem xét kỹ hơn về cách vòng lặp
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 thực sự được triển khai trong Python.

for element in iterable:
    # do something with element

Thực sự được thực hiện như.

# create an iterator object from that iterable
iter_obj = iter(iterable)

# infinite loop
while True:
    try:
        # get the next item
        element = next(iter_obj)
        # do something with element
    except StopIteration:
        # if StopIteration is raised, break from loop
        break

Vì vậy, bên trong, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 tạo ra một đối tượng iterator,
>>> for element in my_list:
...     print(element)
...     
4
7
0
3
2 bằng cách gọi
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
4 trên Itable.

Trớ trêu thay, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 này thực sự là một vòng vô hạn trong khi vòng lặp.

Bên trong vòng lặp, nó gọi

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
6 để có được phần tử tiếp theo và thực hiện phần thân của vòng lặp
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 với giá trị này. Sau khi tất cả các vật phẩm xả,
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
7 được nâng lên trong nội bộ và các vòng lặp kết thúc. Lưu ý rằng bất kỳ loại ngoại lệ nào khác sẽ đi qua.


Xây dựng trình lặp tùy chỉnh

Xây dựng một trình lặp từ đầu rất dễ dàng trong Python. Chúng tôi chỉ phải thực hiện các phương pháp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 trả về chính đối tượng Iterator. Nếu được yêu cầu, một số khởi tạo có thể được thực hiện.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3 phải trả về mục tiếp theo trong chuỗi. Khi đạt đến kết thúc, và trong các cuộc gọi tiếp theo, nó phải tăng
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
7.

Ở đây, chúng tôi trình bày một ví dụ sẽ cho chúng tôi sức mạnh tiếp theo của 2 trong mỗi lần lặp. Điện tử bắt đầu từ số 0 lên đến số người dùng.

Nếu bạn không có bất kỳ ý tưởng nào về lập trình hướng đối tượng, hãy truy cập & nbsp; lập trình hướng đối tượng Python.

class PowTwo:
    """Class to implement an iterator
    of powers of two"""

    def __init__(self, max=0):
        self.max = max

    def __iter__(self):
        self.n = 0
        return self

    def __next__(self):
        if self.n <= self.max:
            result = 2 ** self.n
            self.n += 1
            return result
        else:
            raise StopIteration


# create an object
numbers = PowTwo(3)

# create an iterable from the object
i = iter(numbers)

# Using next to get to the next iterator element
print(next(i))
print(next(i))
print(next(i))
print(next(i))
print(next(i))

Đầu ra

1
2
4
8
Traceback (most recent call last):
  File "/home/bsoyuj/Desktop/Untitled-1.py", line 32, in 
    print(next(i))
  File "", line 18, in __next__
    raise StopIteration
StopIteration

Một cách thanh lịch hơn để tự động lặp lại là bằng cách sử dụng vòng lặp cho. Sử dụng điều này, chúng tôi có thể lặp lại bất kỳ đối tượng nào có thể trả về trình lặp, ví dụ như danh sách, chuỗi, tệp, v.v.

>>> for i in PowTwo(5):
...     print(i)
...     
1
2
4
8
16
32

Làm việc cho vòng lặp cho các trình lặp lại

Như chúng ta thấy trong ví dụ trên, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 có thể tự động lặp qua danh sách.

Trong thực tế, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 có thể lặp lại trên bất kỳ điều đó. Chúng ta hãy xem xét kỹ hơn về cách vòng lặp
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 thực sự được triển khai trong Python.

Thực sự được thực hiện như.

>>> int()
0

>>> inf = iter(int,1)
>>> next(inf)
0
>>> next(inf)
0

Vì vậy, bên trong, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 tạo ra một đối tượng iterator,
>>> for element in my_list:
...     print(element)
...     
4
7
0
3
2 bằng cách gọi
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
4 trên Itable.

Trớ trêu thay, vòng lặp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 này thực sự là một vòng vô hạn trong khi vòng lặp.

class InfIter:
    """Infinite iterator to return all
        odd numbers"""

    def __iter__(self):
        self.num = 1
        return self

    def __next__(self):
        num = self.num
        self.num += 2
        return num

Bên trong vòng lặp, nó gọi

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
6 để có được phần tử tiếp theo và thực hiện phần thân của vòng lặp
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
1 với giá trị này. Sau khi tất cả các vật phẩm xả,
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
7 được nâng lên trong nội bộ và các vòng lặp kết thúc. Lưu ý rằng bất kỳ loại ngoại lệ nào khác sẽ đi qua.

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
0

Xây dựng trình lặp tùy chỉnh

Xây dựng một trình lặp từ đầu rất dễ dàng trong Python. Chúng tôi chỉ phải thực hiện các phương pháp

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
2 trả về chính đối tượng Iterator. Nếu được yêu cầu, một số khởi tạo có thể được thực hiện.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
3 phải trả về mục tiếp theo trong chuỗi. Khi đạt đến kết thúc, và trong các cuộc gọi tiếp theo, nó phải tăng
4
7
0
3
Traceback (most recent call last):
  File "", line 24, in 
    next(my_iter)
StopIteration
7.

Một lần lặp trong Python là gì?

Lặp đi lặp lại các nhiệm vụ giống hệt hoặc tương tự mà không mắc lỗi là điều mà máy tính làm tốt và mọi người làm kém. Việc thực hiện lặp đi lặp lại của một tập hợp các câu lệnh được gọi là lặp. Bởi vì lặp lại rất phổ biến, Python cung cấp một số tính năng ngôn ngữ để làm cho nó dễ dàng hơn.Repeated execution of a set of statements is called iteration. Because iteration is so common, Python provides several language features to make it easier.

Điều gì là có thể hiểu được và Iterator trong Python?

Về cơ bản, một đối tượng mà bất kỳ người dùng nào cũng có thể lặp lại.Phương pháp được sử dụng.Chúng ta có thể tạo một trình lặp khi chúng ta chuyển đối tượng cho phương thức iter ().Chúng tôi sử dụng phương thức __next __ () để lặp lại. An Iterator is also an object that helps a user in iterating over another object (that is iterable). Method Used. We can generate an iterator when we pass the object to the iter() method. We use the __next__() method for iterating.

Sự khác biệt giữa Loop và Iterator là gì?

Trong trường hợp không có các cuộc gọi lặp lại, một câu lệnh Loop chỉ đơn giản là thực thi một vòng lặp vô hạn.Sự khác biệt giữa một cuộc gọi lặp và một cuộc gọi thường xuyên là cuộc gọi iterator "nhớ lại" trạng thái của nó sau khi nó mang lại một giá trị và, trên các cuộc gọi tiếp theo, nó chỉ đơn giản là tiếp tục thực thi.the iterator call "remembers" its state after it yields a value and, on subsequent calls, it simply resumes execution.

Tại sao Iterator được sử dụng?

Nói chung, một trình lặp trong Java được sử dụng để lặp qua bất kỳ bộ sưu tập các đối tượng nào.Để áp dụng trình lặp, tất cả những gì bạn cần làm là nhập Java.Gói sử dụng và sau đó sử dụng phương thức iterator ().Sau đó, bạn có thể sử dụng trình lặp để thực hiện nhiều thao tác trong bộ sưu tập.to loop through any collection of objects. To apply the iterator, all you need to do is import the java. util package and then use the iterator() method. You can then use the iterator to perform multiple operations in the collection.