Các loại lặp lại trong Python là gì?

Iterable là một đối tượng, mà người ta có thể lặp đi lặp lại. Nó tạo ra một Iterator khi được chuyển đến phương thức iter(). Trình vòng lặp là một đối tượng, được sử dụng để lặp qua một đối tượng có thể lặp lại bằng phương thức __next__(). 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 một danh sách không phải là một trình vòng lặp. Một iterator có thể được tạo từ một iterable bằng cách sử dụng hàm iter(). Để làm được điều này, lớp của một đối tượng cần có phương thức __iter__, phương thức này trả về một trình vòng lặp hoặc phương thức __getitem__ với các chỉ mục tuần tự bắt đầu bằng 0.  

ví dụ 1.  

Chúng tôi biết rằng str có thể lặp lại nhưng nó không phải là trình lặp. trong đó nếu chúng ta chạy cái này trong vòng lặp for để in chuỗi thì điều đó là có thể bởi vì khi vòng lặp for thực thi, nó sẽ chuyển đổi thành một trình vòng lặp để thực thi mã

Python3




# code

next("GFG")

đầu ra

Traceback (most recent call last):
  File "/home/1c9622166e9c268c0d67cd9ba2177142.py", line 2, in 
    next("GFG")
TypeError: 'str' object is not an iterator

Ở đây iter( ) đang chuyển đổi s là một chuỗi (có thể lặp lại) thành một iterator và in G lần đầu tiên chúng ta có thể gọi nhiều lần để lặp qua các chuỗi

Khi một vòng lặp for được thực thi, câu lệnh for gọi iter() trên đối tượng mà nó được cho là sẽ lặp lại.  
Nếu cuộc gọi này thành công, cuộc gọi iter sẽ trả về một đối tượng iterator xác định phương thức __next__(), truy cập lần lượt từng phần tử của đối tượng.                                                                                                                                          

Python3




# code


G
F
G
0

G
F
G
1"GFG"


G
F
G
0

G
F
G
1

G
F
G
5

G
F
G
6


G
F
G
7

G
F
G
6


G
F
G
7(next
Berlin
Vienna
Zurich
2


G
F
G
7(next
Berlin
Vienna
Zurich
2


G
F
G
7(next
Berlin
Vienna
Zurich
2

đầu ra


G
F
G

Phương thức __next__() sẽ đưa ra một ngoại lệ StopIteration nếu không còn phần tử nào khả dụng.  
Vòng lặp for sẽ kết thúc ngay khi nó bắt gặp ngoại lệ StopIteration.   
Hãy gọi phương thức __next__() bằng hàm tích hợp next().  

ví dụ 2

Chức năng 'có thể lặp lại' sẽ trả về True nếu đối tượng 'obj' là có thể lặp lại và Sai nếu không.  

Python3




34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
1

34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
2_______1_______1
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
4
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
5
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
6
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
7
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
6
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
9# code0

 

# code1

# code2


G
F
G
1

G
F
G
5# code5

 


G
F
G
7(next35_______9


G
F
G
7(next35_______9


G
F
G
7(next35_______9

đầu ra

Berlin
Vienna
Zurich

Ghi chú. Nếu ‘next(iterator_obj)’ được gọi thêm một lần nữa, nó sẽ trả về ‘StopIteration’.   

Ví dụ3

Kiểm tra đối tượng có thể lặp lại hay không

Python3




next8

next9

(0 (1

(2_______37_______3(4

(5


G
F
G
5(7

(5(9 "GFG"0

(2_______38_______2 "GFG"3

(5(9 "GFG"6

 

"GFG"7

"GFG"8 "GFG"9)0

34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
4)2)3)4
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
6)6)7)4
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False
6)6# code1

Các ví dụ về iterables trong Python là gì?

Iterable là bất kỳ đối tượng Python nào có khả năng trả về từng thành viên của nó tại một thời điểm, cho phép nó được lặp lại trong một vòng lặp for. Các ví dụ quen thuộc về các lần lặp bao gồm danh sách, bộ và chuỗi - bất kỳ chuỗi nào như vậy đều có thể được lặp lại trong vòng lặp for.

Cấu trúc nào có thể lặp lại trong Python?

Iterables là tập hợp các cấu trúc dữ liệu quan trọng trong Python. Chẳng hạn, các loại dựng sẵn như chuỗi, danh sách và từ điển đều là các lần lặp. Nếu bạn đã sử dụng các hàm bậc cao hơn, chẳng hạn như bản đồ và bộ lọc, bạn có thể biết rằng các hàm này cũng tạo ra các lần lặp (i. e. , ánh xạ và lọc các đối tượng).

Loại dữ liệu nào không thể lặp lại trong Python?

Nếu bạn đang chạy mã Python và thấy lỗi “TypeError. Đối tượng 'int' không thể lặp lại”, điều đó có nghĩa là bạn đang cố lặp qua một số nguyên hoặc kiểu dữ liệu khác mà các vòng lặp không thể hoạt động trên đó. Trong Python, dữ liệu có thể lặp lại là danh sách, bộ dữ liệu, bộ, từ điển , v.v.

Chức năng lặp lại trong Python là gì?

Iterable là một đối tượng mà một đối tượng có thể lặp lại . Nó tạo ra một Iterator khi được chuyển đến phương thức iter(). Trình vòng lặp là một đối tượng, được sử dụng để lặp qua một đối tượng có thể lặp lại bằng phương thức __next__(). Trình lặp có phương thức __next__(), trả về mục tiếp theo của đối tượng.