Hướng dẫn how to use iteration in python - cách sử dụng phép lặp trong python

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Đối với các vòng lặp trong Python [Lặp lại xác định] This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: For Loops in Python [Definite Iteration]

Hướng dẫn này sẽ chỉ cho bạn cách thực hiện lần lặp xác định với vòng lặp Python

for  in :
    
0.definite iteration with a Python
for  in :
    
0 loop.

Trong hướng dẫn trước đây trong loạt giới thiệu này, bạn đã học được như sau:

  • Việc thực hiện lặp đi lặp lại của cùng một khối mã lặp đi lặp lại được gọi là lặp.iteration.
  • Có hai loại lặp:
    • Lặp lại xác định, trong đó số lần lặp lại được chỉ định trước iteration, in which the number of repetitions is specified explicitly in advance
    • Lặp lại không xác định, trong đó khối mã thực thi cho đến khi một số điều kiện được đáp ứng iteration, in which the code block executes until some condition is met
  • Trong Python, lần lặp không xác định được thực hiện với vòng lặp
    for  in :
        
    
    1.

Ở đây, những gì bạn bao gồm trong hướng dẫn này:

  • Bạn sẽ bắt đầu với việc so sánh một số mô hình khác nhau được sử dụng bởi các ngôn ngữ lập trình để thực hiện lặp lại xác định.

  • Sau đó, bạn sẽ tìm hiểu về Iterables và Iterators, hai khái niệm tạo thành cơ sở của việc lặp lại xác định trong Python.iterables and iterators, two concepts that form the basis of definite iteration in Python.

  • Cuối cùng, bạn sẽ gắn kết tất cả lại với nhau và tìm hiểu về các vòng lặp Python.

Một cuộc khảo sát về lặp lại xác định trong lập trình

Các vòng lặp xác định thường được gọi là các vòng

for  in :
    
0 vì
for  in :
    
0 là từ khóa được sử dụng để giới thiệu chúng trong gần như tất cả các ngôn ngữ lập trình, bao gồm cả Python.
for  in :
    
0
loops because
for  in :
    
0 is the keyword that is used to introduce them in nearly all programming languages, including Python.

Trong lịch sử, các ngôn ngữ lập trình đã cung cấp một vài hương vị của vòng lặp

for  in :
    
0. Đây được mô tả ngắn gọn trong các phần sau.

Vòng lặp phạm vi số

Vòng lặp

for  in :
    
0 cơ bản nhất là một câu lệnh phạm vi số đơn giản với các giá trị bắt đầu và kết thúc. Định dạng chính xác khác nhau tùy thuộc vào ngôn ngữ nhưng thường trông giống như thế này:

for i = 1 to 10
    

Ở đây, cơ thể của vòng lặp được thực hiện mười lần. Biến

for  in :
    
7 giả định giá trị
for  in :
    
8 trên lần lặp thứ nhất,
for  in :
    
9 trên thứ hai, v.v. Loại vòng lặp
for  in :
    
0 này được sử dụng trong các ngôn ngữ cơ bản, algol và pascal.

Vòng lặp ba biểu hiện

Một hình thức khác của vòng lặp

for  in :
    
0 được phổ biến bởi ngôn ngữ lập trình C chứa ba phần:

  • Một khởi tạo
  • Một biểu thức chỉ định một điều kiện kết thúc
  • Một hành động được thực hiện ở cuối mỗi lần lặp.

Loại vòng lặp này có hình thức sau:

for [i = 1; i >> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print[i]
...
foo
bar
baz
4.
  • Tăng
    for  in :
        
    
    7 bằng
    for  in :
        
    
    8 sau mỗi lần lặp vòng lặp.
  • Các vòng lặp ba biểu hiện

    for  in :
        
    
    0 rất phổ biến vì các biểu thức được chỉ định cho ba phần có thể là gần như mọi thứ, vì vậy điều này có độ linh hoạt hơn một chút so với dạng phạm vi số đơn giản hơn được hiển thị ở trên. Các vòng lặp
    for  in :
        
    
    0 này cũng được giới thiệu trong các ngôn ngữ C ++, Java, PHP và Perl.

    Vòng lặp dựa trên bộ sưu tập hoặc dựa trên vòng lặp

    Loại vòng lặp này lặp lại trên một tập hợp các đối tượng, thay vì chỉ định các giá trị hoặc điều kiện số:

    for i in 
        
    

    Mỗi lần thông qua vòng lặp, biến

    for  in :
        
    
    7 có giá trị của đối tượng tiếp theo trong
    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    0. Loại vòng
    for  in :
        
    
    0 này được cho là tổng quát và trừu tượng nhất. Perl và PHP cũng hỗ trợ loại vòng lặp này, nhưng nó được giới thiệu bởi từ khóa
    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    2 thay vì
    for  in :
        
    
    0.

    Vòng lặp Python
    for  in :
        
    
    0

    Trong số các loại vòng được liệt kê ở trên, Python chỉ thực hiện lần lặp lại cuối cùng: Lặp lại dựa trên bộ sưu tập. Lúc đầu, điều đó có vẻ như là một thỏa thuận thô, nhưng hãy yên tâm rằng việc thực hiện Python, việc lặp lại xác định rất linh hoạt đến nỗi bạn đã giành được cảm giác bị lừa!

    Một thời gian ngắn, bạn sẽ đào sâu vào các ruột của Python từ

    for  in :
        
    
    0 Loop một cách chi tiết. Nhưng bây giờ, hãy để bắt đầu với một nguyên mẫu và ví dụ nhanh chóng, chỉ để làm quen.

    Vòng lặp Python từ

    for  in :
        
    
    0 trông như thế này:

    for  in :
        
    

    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    7 là một tập hợp các đối tượng, ví dụ, một danh sách hoặc tuple.
    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    8 trong thân vòng được biểu thị bằng vết lõm, như với tất cả các cấu trúc điều khiển Python và được thực hiện một lần cho mỗi mục trong
    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    7. Biến vòng lặp
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    0 có giá trị của phần tử tiếp theo trong
    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    7 mỗi lần thông qua vòng lặp.

    Đây là một ví dụ đại diện:

    >>>

    >>> a = ['foo', 'bar', 'baz']
    >>> for i in a:
    ...     print[i]
    ...
    foo
    bar
    baz
    

    Trong ví dụ này,

    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    
    7 là danh sách
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    3 và
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    0 là biến
    for  in :
        
    
    7. Mỗi lần thông qua vòng lặp,
    for  in :
        
    
    7 đảm nhận một mục liên tiếp trong
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    3, do đó
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    8 hiển thị các giá trị
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    9,
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    0 và
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    1, tương ứng. Một vòng lặp
    for  in :
        
    
    0 như thế này là cách pythonic để xử lý các vật phẩm trong một điều không thể xảy ra.

    Nhưng chính xác thì một điều gì đó là gì? Trước khi kiểm tra các vòng lặp

    for  in :
        
    
    0 hơn nữa, sẽ có lợi khi đi sâu hơn vào những gì lặp đi lặp lại trong Python.

    Vòng lặp

    Trong Python, có nghĩa là một đối tượng có thể được sử dụng trong lặp. Thuật ngữ này được sử dụng như:iterable means an object can be used in iteration. The term is used as:

    • Một tính từ: Một đối tượng có thể được mô tả là có thể lặp lại. An object may be described as iterable.
    • Một danh từ: Một đối tượng có thể được đặc trưng như một điều khác. An object may be characterized as an iterable.

    Nếu một đối tượng có thể sử dụng được, nó có thể được chuyển đến chức năng Python tích hợp

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4, trả về một thứ gọi là tererator. Vâng, thuật ngữ có một chút lặp đi lặp lại. Treo ở đó. Tất cả cuối cùng làm việc.iterator. Yes, the terminology gets a bit repetitive. Hang in there. It all works out in the end.

    Mỗi đối tượng trong ví dụ sau là có thể lặp lại và trả về một số loại lặp khi được chuyển đến

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4:

    >>>

    >>> iter['foobar']                             # String
    
    
    >>> iter[['foo', 'bar', 'baz']]                # List
    
    
    >>> iter[['foo', 'bar', 'baz']]                # Tuple
    
    
    >>> iter[{'foo', 'bar', 'baz'}]                # Set
    
    
    >>> iter[{'foo': 1, 'bar': 2, 'baz': 3}]       # Dict
    
    

    Mặt khác, các loại đối tượng này không thể hiểu được:

    >>>

    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    

    Mặt khác, các loại đối tượng này không thể hiểu được:

    Tất cả các loại dữ liệu bạn đã gặp cho đến nay là các loại bộ sưu tập hoặc container đều có thể hiểu được. Chúng bao gồm chuỗi, danh sách, tuple, dict, set và frozenset.

    Nhưng đây không phải là loại duy nhất mà bạn có thể lặp lại. Nhiều đối tượng được tích hợp vào Python hoặc được xác định trong các mô -đun được thiết kế để có thể sử dụng được. Ví dụ, mở các tập tin trong Python là có thể hiểu được. Như bạn sẽ thấy sớm trong hướng dẫn trên Tệp I/O, việc lặp lại một đối tượng tệp mở đọc dữ liệu từ tệp.

    Trong thực tế, hầu hết mọi đối tượng trong Python đều có thể được thực hiện. Ngay cả các đối tượng do người dùng xác định cũng có thể được thiết kế theo cách mà chúng có thể được lặp lại. [Bạn sẽ tìm hiểu làm thế nào điều đó được thực hiện trong bài viết sắp tới về lập trình hướng đối tượng.]

    Trình lặp

    Được rồi, bây giờ bạn biết ý nghĩa của một đối tượng là có thể sử dụng được và bạn biết cách sử dụng

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4 để lấy một trình lặp từ nó. Một khi bạn đã có một người lặp, bạn có thể làm gì với nó?

    Một iterator về cơ bản là một nhà sản xuất giá trị mang lại các giá trị liên tiếp từ đối tượng có thể đánh giá cao của nó. Hàm tích hợp

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7 được sử dụng để có được giá trị tiếp theo từ trong Iterator.

    >>>

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    

    Mặt khác, các loại đối tượng này không thể hiểu được:

    Tất cả các loại dữ liệu bạn đã gặp cho đến nay là các loại bộ sưu tập hoặc container đều có thể hiểu được. Chúng bao gồm chuỗi, danh sách, tuple, dict, set và frozenset.

    Nhưng đây không phải là loại duy nhất mà bạn có thể lặp lại. Nhiều đối tượng được tích hợp vào Python hoặc được xác định trong các mô -đun được thiết kế để có thể sử dụng được. Ví dụ, mở các tập tin trong Python là có thể hiểu được. Như bạn sẽ thấy sớm trong hướng dẫn trên Tệp I/O, việc lặp lại một đối tượng tệp mở đọc dữ liệu từ tệp.

    >>>

    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    

    Mặt khác, các loại đối tượng này không thể hiểu được:

    Tất cả các loại dữ liệu bạn đã gặp cho đến nay là các loại bộ sưu tập hoặc container đều có thể hiểu được. Chúng bao gồm chuỗi, danh sách, tuple, dict, set và frozenset.

    >>>

    >>> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    

    Mặt khác, các loại đối tượng này không thể hiểu được:

    Tất cả các loại dữ liệu bạn đã gặp cho đến nay là các loại bộ sưu tập hoặc container đều có thể hiểu được. Chúng bao gồm chuỗi, danh sách, tuple, dict, set và frozenset.

    >>>

    for [i = 1; i >>

    for [i = 1; i >> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4 để lấy một trình lặp từ nó. Một khi bạn đã có một người lặp, bạn có thể làm gì với nó?Một iterator về cơ bản là một nhà sản xuất giá trị mang lại các giá trị liên tiếp từ đối tượng có thể đánh giá cao của nó. Hàm tích hợp
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7 được sử dụng để có được giá trị tiếp theo từ trong Iterator.Dưới đây là một ví dụ sử dụng cùng một danh sách như trên: Trong ví dụ này,
    >>> iter[42]                                   # Integer
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[42]
    TypeError: 'int' object is not iterable
    
    >>> iter[3.1]                                  # Float
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[3.1]
    TypeError: 'float' object is not iterable
    
    >>> iter[len]                                  # Built-in function
    Traceback [most recent call last]:
      File "", line 1, in 
        iter[len]
    TypeError: 'builtin_function_or_method' object is not iterable
    
    3 là một danh sách có thể lặp lại và
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    9 là trình lặp liên quan, thu được với
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4. Mỗi cuộc gọi
    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    
    1 có được giá trị tiếp theo từ
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    9.Lưu ý làm thế nào một trình lặp lại giữ trạng thái của nó trong nội bộ. Nó biết những giá trị nào đã được lấy, vì vậy khi bạn gọi
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7, nó biết giá trị nào sẽ trả về tiếp theo.
    Điều gì xảy ra khi trình lặp hết giá trị? Hãy để Lừa thực hiện thêm một cuộc gọi
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7 trên trình lặp ở trên:Nếu tất cả các giá trị từ một trình lặp đã được trả về, một cuộc gọi
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7 tiếp theo sẽ tăng một ngoại lệ
    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    
    6. Bất kỳ nỗ lực nào nữa để có được các giá trị từ trình lặp sẽ thất bại.
    Bạn chỉ có thể có được các giá trị từ một trình lặp theo một hướng. Bạn có thể đi lùi. Không có chức năng
    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    
    7. Nhưng bạn có thể xác định hai lần lặp độc lập trên cùng một đối tượng có thể lặp lại:
    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4
    Ngay cả khi Iterator
    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    
    8 đã ở cuối danh sách,
    >>> next[itr]
    Traceback [most recent call last]:
      File "", line 1, in 
        next[itr]
    StopIteration
    
    9 vẫn ở đầu. Mỗi iterator duy trì trạng thái nội bộ của riêng mình, không phụ thuộc vào cái khác.

    Bây giờ, hãy xem xét lại vòng lặp

    for  in :
        
    
    0 đơn giản được trình bày khi bắt đầu hướng dẫn này:

    >>>

    >>> a = ['foo', 'bar', 'baz']
    >>> for i in a:
    ...     print[i]
    ...
    foo
    bar
    baz
    

    Vòng lặp này có thể được mô tả hoàn toàn theo các khái niệm bạn vừa biết. Để thực hiện vòng lặp này, vòng lặp

    for  in :
        
    
    0 mô tả, Python làm như sau:

    • Gọi
      >>> a = ['foo', 'bar', 'baz']
      
      >>> itr = iter[a]
      >>> itr
      
      
      >>> next[itr]
      'foo'
      >>> next[itr]
      'bar'
      >>> next[itr]
      'baz'
      
      4 để có được trình lặp lại cho
      >>> iter[42]                                   # Integer
      Traceback [most recent call last]:
        File "", line 1, in 
          iter[42]
      TypeError: 'int' object is not iterable
      
      >>> iter[3.1]                                  # Float
      Traceback [most recent call last]:
        File "", line 1, in 
          iter[3.1]
      TypeError: 'float' object is not iterable
      
      >>> iter[len]                                  # Built-in function
      Traceback [most recent call last]:
        File "", line 1, in 
          iter[len]
      TypeError: 'builtin_function_or_method' object is not iterable
      
      3
    • Gọi
      >>> a = ['foo', 'bar', 'baz']
      
      >>> itr = iter[a]
      >>> itr
      
      
      >>> next[itr]
      'foo'
      >>> next[itr]
      'bar'
      >>> next[itr]
      'baz'
      
      7 liên tục để lần lượt lấy từng mục từ trình lặp lại
    • Chấm dứt vòng lặp khi
      >>> a = ['foo', 'bar', 'baz']
      
      >>> itr = iter[a]
      >>> itr
      
      
      >>> next[itr]
      'foo'
      >>> next[itr]
      'bar'
      >>> next[itr]
      'baz'
      
      7 tăng ngoại lệ
      >>> next[itr]
      Traceback [most recent call last]:
        File "", line 1, in 
          next[itr]
      StopIteration
      
      6

    Cơ thể vòng lặp được thực hiện một lần cho mỗi mục

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    7 trả về, với biến vòng
    for  in :
        
    
    7 được đặt thành mục đã cho cho mỗi lần lặp.

    Trình tự các sự kiện này được tóm tắt trong sơ đồ sau:

    Sơ đồ của một con trăn cho vòng lặp

    Có lẽ điều này có vẻ như rất nhiều hoạt động kinh doanh khỉ không cần thiết, nhưng lợi ích là đáng kể. Python xử lý lặp lại tất cả các vòng lặp theo cách chính xác theo cách này, và trong Python, Iterables và Iterators rất nhiều:

    • Nhiều đối tượng tích hợp và thư viện là có thể sử dụng được.

    • Có một mô -đun thư viện tiêu chuẩn gọi là

      >>> a
      ['foo', 'bar', 'baz']
      
      >>> itr1 = iter[a]
      >>> itr2 = iter[a]
      
      >>> next[itr1]
      'foo'
      >>> next[itr1]
      'bar'
      >>> next[itr1]
      'baz'
      
      >>> next[itr2]
      'foo'
      
      7 chứa nhiều chức năng trả về Iterables.

    • Có thể tạo ra các đối tượng do người dùng xác định với khả năng hướng đối tượng Python có thể được thực hiện để có thể sử dụng được.

    • Python có tính năng cấu trúc gọi là trình tạo cho phép bạn tạo trình lặp của riêng mình một cách đơn giản, đơn giản.

    Bạn sẽ khám phá thêm về tất cả những điều trên trong suốt loạt bài này. Tất cả chúng có thể là mục tiêu của vòng lặp

    for  in :
        
    
    0 và cú pháp giống nhau trên bảng. Nó thanh lịch trong sự đơn giản và linh hoạt.

    Lặp lại thông qua một từ điển

    Bạn đã thấy trước đó rằng một trình lặp có thể được lấy từ một từ điển với

    >>> a = ['foo', 'bar', 'baz']
    
    >>> itr = iter[a]
    >>> itr
    
    
    >>> next[itr]
    'foo'
    >>> next[itr]
    'bar'
    >>> next[itr]
    'baz'
    
    4, vì vậy bạn biết từ điển phải có thể sử dụng được. Điều gì xảy ra khi bạn lặp qua một từ điển? Hãy xem nào:

    >>>

    for [i = 1; i >>

    for [i = 1; i >

    for [i = 1; i >>

    for [i = 1; i >

    for [i = 1; i >>
    

    for [i = 1; i  a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    0 hoặc
    >>> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    2. Trong một phiên thay thế, đó có thể là một cách thuận tiện để nhanh chóng hiển thị các giá trị là gì:

    >>>

    for i in 
        
    
    2

    Tuy nhiên, khi

    for [i = 1; i >> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    0 hoặc
    >>> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    2 theo cách này. Giống như trình lặp, các đối tượng
    for [i = 1; i >> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    0 hoặc
    >>> a
    ['foo', 'bar', 'baz']
    
    >>> itr1 = iter[a]
    >>> itr2 = iter[a]
    
    >>> next[itr1]
    'foo'
    >>> next[itr1]
    'bar'
    >>> next[itr1]
    'baz'
    
    >>> next[itr2]
    'foo'
    
    2 trên đối tượng
    for [i = 1; i 

    for i in 
        
    
    4

    Tất cả các tham số được chỉ định cho

    for [i = 1; i 

    Bài Viết Liên Quan

    Chủ Đề