Hướng dẫn why do we use iterator in python? - tại sao chúng ta sử dụng trình lặp trong python?

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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    next(my_iter)
StopIteration
2 and
4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    next(my_iter)
StopIteration
3.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 <module>
    print(next(i))
  File "<string>", 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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    next(my_iter)
StopIteration
2 và
4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    next(my_iter)
StopIteration
3.

Phương thức

4
7
0
3
Traceback (most recent call last):
  File "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    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 "<string>", line 24, in <module>
    next(my_iter)
StopIteration
7.

Việc sử dụng Iterator trong Python là gì?

Iterator in Python là một đối tượng được sử dụng để lặp lại các đối tượng có thể lặp lại như danh sách, bộ dữ liệu, dicts và bộ. Đối tượng Iterator được khởi tạo bằng phương thức iter (). Nó sử dụng phương thức tiếp theo () cho phép lặp. __next __ (): Phương thức tiếp theo trả về giá trị tiếp theo cho ITEBELLE.to iterate over iterable objects like lists, tuples, dicts, and sets. The iterator object is initialized using the iter() method. It uses the next() method for iteration. __next__(): The next method returns the next value for the iterable.

Lợi ích của việc sử dụng tererators là gì?

Lợi ích của người lặp.Sử dụng một trình lặp lại đơn giản hóa mã và làm cho nó chung.Lợi ích của việc sử dụng API Iterator này bao gồm: xử lý các biến thuộc tất cả các loại, kích thước và hình dạng đồng đều, cho dù chúng có phù hợp với bộ nhớ hay không, ngay cả khi một hàng không phù hợp với bộ nhớ.treats variables of all types, sizes, and shapes uniformly, whether they fit in memory or not, even if a single row won't fit in memory.

Tại sao Iterator được sử dụng thay vì cho vòng lặp?

Trong For-Arech Loop, chúng tôi không thể sửa đổi bộ sưu tập, nó sẽ ném một cách khác với đồng thời với Iterator, chúng tôi có thể sửa đổi bộ sưu tập.Sửa đổi một bộ sưu tập chỉ đơn giản là loại bỏ một phần tử hoặc thay đổi nội dung của một mục được lưu trữ trong bộ sưu tập.with iterator we can modify collection. Modifying a collection simply means removing an element or changing content of an item stored in the collection.

Iterator là gì khi nào chúng ta nên sử dụng nó?

Trình lặp là một đối tượng có thể được sử dụng để lặp qua các bộ sưu tập, như ArrayList và Hashset.Nó được gọi là "tererator" vì "lặp lại" là thuật ngữ kỹ thuật để lặp.Để sử dụng trình lặp, bạn phải nhập nó từ gói java.util.an object that can be used to loop through collections, like ArrayList and HashSet. It is called an "iterator" because "iterating" is the technical term for looping. To use an Iterator, you must import it from the java.util package.