Hướng dẫn python for loop advance iterator - python cho trình lặp nâng cao vòng lặp

Có một gói tuyệt vời trong Python gọi là

for i = 1 to 10
    <loop body>
3.

Show

Nhưng trước khi tôi tham gia vào đó, nó sẽ phục vụ tốt để giải thích cách thức giao thức lặp được thực hiện trong Python. Khi bạn muốn cung cấp phép lặp qua thùng chứa của mình, bạn chỉ định phương thức lớp

for i = 1 to 10
    <loop body>
4 cung cấp loại lặp. "Hiểu câu lệnh 'for' của Python là một bài viết hay về cách tuyên bố
for i = 1 to 10
    <loop body>
5 thực sự hoạt động trong Python và cung cấp một cái nhìn tổng quan tốt đẹp về cách các loại iterator hoạt động.

Hãy xem những điều sau:

>>> sequence = [1, 2, 3, 4, 5]
>>> iterator = sequence.__iter__()
>>> iterator.next()
1
>>> iterator.next()
2
>>> for number in iterator:
    print number 
3
4
5

Bây giờ trở lại

for i = 1 to 10
    <loop body>
3. Gói chứa các chức năng cho các mục đích lặp khác nhau. Nếu bạn cần thực hiện trình tự đặc biệt, đây là nơi đầu tiên để xem xét.

Ở phía dưới, bạn có thể tìm thấy phần công thức nấu ăn có chứa các công thức nấu ăn để tạo bộ công cụ mở rộng bằng ITERTOOLS hiện có dưới dạng các khối xây dựng.

Và có một chức năng thú vị thực hiện chính xác những gì bạn cần:

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)

Đây là một ví dụ nhanh, có thể đọc được, về cách thức hoạt động (Python 2.5):

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15

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 i = 1 to 10
    <loop body>
7.definite iteration with a Python
for i = 1 to 10
    <loop body>
7 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 i = 1 to 10
        <loop body>
    
    8.

Ở đâ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, ____37.

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 i = 1 to 10
    <loop body>
7 vì
for i = 1 to 10
    <loop body>
7 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 i = 1 to 10
    <loop body>
7
loops because
for i = 1 to 10
    <loop body>
7 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 i = 1 to 10
    <loop body>
7. Đâ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 i = 1 to 10
    <loop body>
7 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
    <loop body>

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

for (i = 1; i <= 10; i++)
    <loop body>
4 giả định giá trị
for (i = 1; i <= 10; i++)
    <loop body>
5 trên lần lặp thứ nhất,
for (i = 1; i <= 10; i++)
    <loop body>
6 trên lần thứ hai, v.v. Loại vòng
for i = 1 to 10
    <loop body>
7 này được sử dụng trong các ngôn ngữ BASIC, ALGOL và PASCAL.

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

Một dạng khác của vòng lặp

for i = 1 to 10
    <loop body>
7 đượ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 <= 10; i++)
    <loop body>

Vòng lặp này được giải thích như sau:

  • Khởi tạo
    for (i = 1; i <= 10; i++)
        <loop body>
    
    4 đến
    for (i = 1; i <= 10; i++)
        <loop body>
    
    5.
  • Tiếp tục lặp lại miễn là
    for i in <collection>
        <loop body>
    
    1.
  • Tăng
    for (i = 1; i <= 10; i++)
        <loop body>
    
    4 bằng
    for (i = 1; i <= 10; i++)
        <loop body>
    
    5 sau mỗi lần lặp lại vòng lặp.

Các vòng lặp ba biểu hiện

for i = 1 to 10
    <loop body>
7 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 i = 1 to 10
    <loop body>
7 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 <collection>
    <loop body>

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

for (i = 1; i <= 10; i++)
    <loop body>
4 có giá trị của đối tượng tiếp theo trong
for i in <collection>
    <loop body>
7. Loại vòng
for i = 1 to 10
    <loop body>
7 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
for i in <collection>
    <loop body>
9 thay vì
for i = 1 to 10
    <loop body>
7.

Vòng lặp Python for i = 1 to 10 7

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 ruột của vòng lặp Python ____ ____37 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 i = 1 to 10
    <loop body>
7 trông như thế này:

for <var> in <iterable>:
    <statement(s)>

for <var> in <iterable>:
    <statement(s)>
4 là một tập hợp các đối tượng, ví dụ, một danh sách hoặc tuple.
for <var> in <iterable>:
    <statement(s)>
5 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
for <var> in <iterable>:
    <statement(s)>
4. Biến vòng lặp
for <var> in <iterable>:
    <statement(s)>
7 có giá trị của phần tử tiếp theo trong
for <var> in <iterable>:
    <statement(s)>
4 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,

for <var> in <iterable>:
    <statement(s)>
4 là danh sách
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
0 và
for <var> in <iterable>:
    <statement(s)>
7 là biến
for (i = 1; i <= 10; i++)
    <loop body>
4. Mỗi lần thông qua vòng lặp,
for (i = 1; i <= 10; i++)
    <loop body>
4 đảm nhận một mục liên tiếp trong
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
0, do đó
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
5 hiển thị các giá trị
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
6,
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
7 và
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
8, tương ứng. Một vòng lặp
for i = 1 to 10
    <loop body>
7 như thế này là cách pythonic để xử lý các vật phẩm trong một điều khác.

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

for i = 1 to 10
    <loop body>
7 vòng lặp xa hơn, 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

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

1, 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

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

1:

>>>

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

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

1 để 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

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

4 được sử dụng để có được giá trị tiếp theo từ trong Iterator.

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
0

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.

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
1

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.

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
2

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.

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
3

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

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
4

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

1 để 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
>>> 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

4 đượ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,
>>> a = ['foo', 'bar', 'baz']
>>> for i in a:
...     print(i)
...
foo
bar
baz
0 là một danh sách có thể lặp lại và
>>> 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

6 là trình lặp liên quan, thu được với
>>> 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

1. Mỗi cuộc gọi
>>> 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 có được giá trị tiếp theo từ
>>> 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

6.
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
>>> 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

4, 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
>>> 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

4 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
>>> 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

4 tiếp theo sẽ tăng một ngoại lệ
>>> 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. 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
>>> 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
4. 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:
>>> 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

1
Ngay cả khi Iterator
>>> 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
5 đã ở cuối 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
6 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 i = 1 to 10
    <loop body>
7 đơ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 lần lặp lại vòng lặp

for i = 1 to 10
    <loop body>
7 này mô tả, Python làm như sau:

  • Gọi
    >>> 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
    
    
    1 để lấy một trình lặp lại cho
    >>> a = ['foo', 'bar', 'baz']
    >>> for i in a:
    ...     print(i)
    ...
    foo
    bar
    baz
    
    0
  • Gọi
    >>> 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
    
    
    4 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
    >>> 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
    
    
    4 tăng ngoại lệ
    >>> 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

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

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

4 trả về, với biến vòng
for (i = 1; i <= 10; i++)
    <loop body>
4 đượ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:

Hướng dẫn python for loop advance iterator - python cho trình lặp nâng cao vòng lặp
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à

    for i = 1 to 10
        <loop body>
    
    3 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 i = 1 to 10
    <loop body>
7 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

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

1, 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:

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
6

Như bạn có thể thấy, khi một vòng lặp

for i = 1 to 10
    <loop body>
7 lặp qua từ điển, biến vòng lặp được gán cho các khóa từ điển.

Để truy cập các giá trị từ điển trong vòng lặp, bạn có thể thực hiện tham chiếu từ điển bằng cách sử dụng khóa như bình thường:

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
7

Bạn cũng có thể lặp lại thông qua các giá trị từ điển trực tiếp bằng cách sử dụng

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
21:

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
8

Trên thực tế, bạn có thể lặp lại cả các khóa và giá trị của từ điển đồng thời. Đó là bởi vì biến vòng lặp của vòng lặp

for i = 1 to 10
    <loop body>
7 không chỉ giới hạn ở một biến duy nhất. Nó cũng có thể là một tuple, trong trường hợp đó, các bài tập được thực hiện từ các mục trong sự khác biệt bằng cách sử dụng đóng gói và giải nén, giống như với một câu lệnh gán:

>>>

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
9

Như đã lưu ý trong hướng dẫn về từ điển Python, phương thức từ điển

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
23 Trả về một cách hiệu quả một danh sách các cặp khóa/giá trị dưới dạng Tuples:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
0

Do đó, cách pythonic để lặp lại thông qua từ điển truy cập cả các khóa và giá trị trông như thế này:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
1

Hàm def consume(iterator, n): '''Advance the iterator n-steps ahead. If n is none, consume entirely.''' collections.deque(itertools.islice(iterator, n), maxlen=0) 24

Trong phần đầu tiên của hướng dẫn này, bạn đã thấy một loại vòng

for i = 1 to 10
    <loop body>
7 được gọi là vòng lặp phạm vi số, trong đó bắt đầu và kết thúc các giá trị số được chỉ định. Mặc dù hình thức
for i = 1 to 10
    <loop body>
7 này được tích hợp trực tiếp vào Python, nhưng nó dễ dàng đến.

Ví dụ: nếu bạn muốn lặp lại thông qua các giá trị từ

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
27 đến
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
28, bạn có thể chỉ cần làm điều này:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
2

Giải pháp này không quá tệ khi chỉ có một vài con số. Nhưng nếu phạm vi số lớn hơn nhiều, nó sẽ trở nên tẻ nhạt khá nhanh.

Hạnh phúc thay, Python cung cấp một tùy chọn tốt hơn, chức năng

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
24 tích hợp, trả về một thứ có thể mang lại một chuỗi số nguyên.

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
30 trả về một số lượng có thể mang lại số nguyên bắt đầu bằng
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
27, cho đến nhưng không bao gồm
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
32:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
3

Lưu ý rằng

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
24 trả về một đối tượng của lớp
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
34, không phải là danh sách hoặc tuple của các giá trị. Bởi vì một đối tượng
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
34 là một điều có thể đi được, bạn có thể thu được các giá trị bằng cách lặp lại chúng bằng một vòng
for i = 1 to 10
    <loop body>
7:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
4

Bạn cũng có thể thu hút tất cả các giá trị cùng một lúc với

>>> 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
7 hoặ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
9. 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ì:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
5

Tuy nhiên, khi

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
24 được sử dụng trong mã là một phần của ứng dụng lớn hơn, nó thường được coi là thực hành kém để sử dụng
>>> 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
7 hoặ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
9 theo cách này. Giống như trình lặp, các đối tượng
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
34 là lười biếng, các giá trị trong phạm vi được chỉ định không được tạo cho đến khi chúng được yêu cầu. Sử dụng
>>> 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
7 hoặ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
9 trên đối tượng
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
34 buộc tất cả các giá trị sẽ được trả về cùng một lúc. Điều này hiếm khi cần thiết, và nếu danh sách dài, nó có thể lãng phí thời gian và trí nhớ.

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
46 trả về một số lượng có thể mang lại số nguyên bắt đầu bằng
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
47, cho đến nhưng không bao gồm
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
32. Nếu được chỉ định,
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
49 cho biết số lượng bỏ qua giữa các giá trị (tương tự với giá trị sải chân được sử dụng cho chuỗi và cắt danh sách):

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
6

Nếu

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
49 bị bỏ qua, nó mặc định là
for (i = 1; i <= 10; i++)
    <loop body>
5:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
7

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

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
24 phải là số nguyên, nhưng bất kỳ tham số nào có thể âm. Đương nhiên, nếu
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
47 lớn hơn
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
32,
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
49 phải âm (nếu bạn muốn có bất kỳ kết quả nào):

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
8

Thay đổi hành vi vòng lặp for i = 1 to 10 7

Bạn đã thấy trong hướng dẫn trước đây trong loạt giới thiệu này làm thế nào việc thực hiện vòng lặp

for i = 1 to 10
    <loop body>
8 có thể bị gián đoạn với các câu lệnh
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
58 và
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
59 và được sửa đổi với một điều khoản
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
60. Những khả năng này cũng có sẵn với vòng lặp
for i = 1 to 10
    <loop body>
7.

Các câu lệnh def consume(iterator, n): '''Advance the iterator n-steps ahead. If n is none, consume entirely.''' collections.deque(itertools.islice(iterator, n), maxlen=0) 58 và def consume(iterator, n): '''Advance the iterator n-steps ahead. If n is none, consume entirely.''' collections.deque(itertools.islice(iterator, n), maxlen=0) 59

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
58 và
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
59 hoạt động theo cùng một cách với các vòng
for i = 1 to 10
    <loop body>
7 như với các vòng
for i = 1 to 10
    <loop body>
8.
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
58 chấm dứt hoàn toàn vòng lặp và tiến hành câu lệnh đầu tiên sau vòng lặp:

>>>

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
9

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
59 chấm dứt lần lặp hiện tại và tiến hành lần lặp tiếp theo:

>>>

for i = 1 to 10
    <loop body>
0

Mệnh đề def consume(iterator, n): '''Advance the iterator n-steps ahead. If n is none, consume entirely.''' collections.deque(itertools.islice(iterator, n), maxlen=0) 60

Một vòng lặp

for i = 1 to 10
    <loop body>
7 cũng có thể có mệnh đề
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
60. Việc giải thích tương tự như vòng lặp
for i = 1 to 10
    <loop body>
8. Điều khoản
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
60 sẽ được thực thi nếu vòng lặp chấm dứt thông qua sự kiệt sức của điều đó:

>>>

for i = 1 to 10
    <loop body>
1

Điều khoản

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
60 won won sẽ được thực thi nếu danh sách bị chia tay bằng tuyên bố
def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)
58:

>>>

for i = 1 to 10
    <loop body>
2

Sự kết luận

Hướng dẫn này đã trình bày vòng lặp

for i = 1 to 10
    <loop body>
7, công việc của sự lặp lại xác định trong Python.definite iteration in Python.

Bạn cũng đã tìm hiểu về các hoạt động bên trong của các phép lặp và lặp, hai loại đối tượng quan trọng làm nền tảng cho phép lặp xác định, nhưng cũng nổi bật trong một loạt các mã Python khác.iterables and iterators, two important object types that underlie definite iteration, but also figure prominently in a wide variety of other Python code.

Trong hai hướng dẫn tiếp theo trong chuỗi giới thiệu này, bạn sẽ chuyển bánh răng một chút và khám phá cách các chương trình Python có thể tương tác với người dùng thông qua đầu vào từ bàn phím và đầu ra vào bảng điều khiển.input from the keyboard and output to the console.

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)

Iterator có nhanh hơn so với Loop Python không?

Trình lặp sẽ nhanh hơn và có hiệu quả bộ nhớ tốt hơn. and have better memory efficiency.

Làm thế nào để bạn tiến lên một vòng lặp trong Python?

Chỉ cần bỏ qua một dòng, lấy dòng tiếp theo, làm bất cứ điều gì bạn cần làm với nó và thoát ra khỏi vòng lặp, tất cả từ bên trong khối đó nếu khối.Nói chung, tốt hơn là sử dụng tiếp theo thay vì đọc cho điều này.skip a line, grab the next line, do whatever you need to do with it, and break out of the for loop, all from within that if block. It's generally better to use next instead of readline for this.

Làm thế nào để bạn tăng các lần lặp trong Python?

Để lặp lại thông qua một bước đi trong các bước, sử dụng cho vòng lặp, bạn có thể sử dụng hàm phạm vi ().Chức năng Range () cho phép tăng chỉ số vòng lặp trên mạng trong số lượng các bước cần thiết.use range() function. range() function allows to increment the “loop index” in required amount of steps.

Iter () trong python là gì?

Phương thức Python iter () trả về đối tượng iterator, nó được sử dụng để chuyển đổi một ITEBLED có thể lặp lại.Cú pháp: ITER (obj, sentinel) Các tham số: OBJ: Đối tượng phải được chuyển đổi thành Itable (thường là một trình lặp).Sentinel: Giá trị được sử dụng để biểu thị kết thúc của chuỗi.returns the iterator object, it is used to convert an iterable to the iterator. Syntax : iter(obj, sentinel) Parameters : obj : Object which has to be converted to iterable ( usually an iterator ). sentinel : value used to represent end of sequence.