Hướng dẫn how to add a counter in python for loop - cách thêm bộ đếm trong vòng lặp python for

Điều này [tạo ra một biến bổ sung trước vòng lặp] không phải là Pythonic.

Cách Pythonic để lặp lại các mục trong khi có một bộ đếm bổ sung đang sử dụng

0 a
1 b
2 c
5:

for index, item in enumerate[iterable]:
    print[index, item]

Vì vậy, ví dụ đối với danh sách

0 a
1 b
2 c
6 Điều này sẽ là:

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]

... và tạo ra đầu ra:

0 a
1 b
2 c

Bạn được khuyến nghị mạnh mẽ để luôn sử dụng các chức năng tích hợp của Python để tạo "Giải pháp pythonic" bất cứ khi nào có thể. Ngoài ra còn có tài liệu để liệt kê.

Nếu bạn cần thêm thông tin về việc liệt kê, bạn có thể tìm kiếm PEP 279-hàm được liệt kê [].

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: lặp lại với Python Enumerate [] This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Looping With Python enumerate[]

Trong Python, một vòng

0 a
1 b
2 c
7 thường được viết dưới dạng vòng lặp trên một đối tượng có thể lặp lại. Điều này có nghĩa là bạn không cần một biến đếm để truy cập các mục trong ITBEABLE. Tuy nhiên, đôi khi, bạn muốn có một biến thay đổi trên mỗi lần lặp vòng lặp. Thay vì tự tạo và tăng một biến, bạn có thể sử dụng Python từ
0 a
1 b
2 c
8 để có được một bộ đếm và giá trị từ điều đáng tin cậy cùng một lúc!
0 a
1 b
2 c
8
to get a counter and the value from the iterable at the same time!

Trong hướng dẫn này, bạn sẽ thấy cách:

  • Sử dụng
    0 a
    1 b
    2 c
    
    8 để lấy một quầy trong vòng lặp
    0 a
    1 b
    2 c
    
    8
    to get a counter in a loop
  • Áp dụng
    0 a
    1 b
    2 c
    
    8 để hiển thị số lượng vật phẩmdisplay item counts
  • Sử dụng
    0 a
    1 b
    2 c
    
    8 với các câu lệnh có điều kiệnconditional statements
  • Thực hiện chức năng tương đương của riêng bạn với
    0 a
    1 b
    2 c
    
    8equivalent function to
    0 a
    1 b
    2 c
    
    8
  • Giải nén các giá trị được trả về bởi
    0 a
    1 b
    2 c
    
    8
    returned by
    0 a
    1 b
    2 c
    
    8

Bắt đầu nào!

Lặp lại với các vòng
0 a
1 b
2 c
7 trong Python

Vòng lặp

0 a
1 b
2 c
7 trong Python sử dụng phép lặp dựa trên bộ sưu tập. Điều này có nghĩa là Python gán mục tiếp theo từ một biến có thể lặp lại cho biến vòng lặp trên mỗi lần lặp, giống như trong ví dụ này:collection-based iteration. This means that Python assigns the next item from an iterable to the loop variable on every iteration, like in this example:

>>>

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c

Trong ví dụ này,

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 là một danh sách với ba chuỗi,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
9. Trong Python, danh sách là một loại đối tượng có thể lặp lại. Trong vòng
0 a
1 b
2 c
7, biến vòng lặp là
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1. Trên mỗi lần lặp của vòng lặp,
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 được đặt thành mục tiếp theo từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6.

Tiếp theo, bạn in

>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 lên màn hình. Ưu điểm của việc lặp lại dựa trên bộ sưu tập là nó giúp tránh lỗi ngoài từng người phổ biến trong các ngôn ngữ lập trình khác.

Bây giờ hãy tưởng tượng rằng, ngoài chính giá trị, bạn muốn in chỉ mục của mục trong danh sách lên màn hình trên mỗi lần lặp. Một cách để tiếp cận nhiệm vụ này là tạo một biến để lưu trữ chỉ mục và cập nhật nó trên mỗi lần lặp:

>>>

>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c

Trong ví dụ này,

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 là một danh sách với ba chuỗi,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
9. Trong Python, danh sách là một loại đối tượng có thể lặp lại. Trong vòng
0 a
1 b
2 c
7, biến vòng lặp là
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1. Trên mỗi lần lặp của vòng lặp,
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 được đặt thành mục tiếp theo từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6.

>>>

>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c

Trong ví dụ này,

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 là một danh sách với ba chuỗi,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
9. Trong Python, danh sách là một loại đối tượng có thể lặp lại. Trong vòng
0 a
1 b
2 c
7, biến vòng lặp là
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1. Trên mỗi lần lặp của vòng lặp,
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 được đặt thành mục tiếp theo từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6.

Tiếp theo, bạn in

>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 lên màn hình. Ưu điểm của việc lặp lại dựa trên bộ sưu tập là nó giúp tránh lỗi ngoài từng người phổ biến trong các ngôn ngữ lập trình khác.

>>>

>>> for index in range[len[values]]:
...     value = values[index]
...     print[index, value]
...
0 a
1 b
2 c

Trong ví dụ này,

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 là một danh sách với ba chuỗi,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
9. Trong Python, danh sách là một loại đối tượng có thể lặp lại. Trong vòng
0 a
1 b
2 c
7, biến vòng lặp là
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1. Trên mỗi lần lặp của vòng lặp,
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 được đặt thành mục tiếp theo từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6.

Tiếp theo, bạn in

>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 lên màn hình. Ưu điểm của việc lặp lại dựa trên bộ sưu tập là nó giúp tránh lỗi ngoài từng người phổ biến trong các ngôn ngữ lập trình khác.

Bây giờ hãy tưởng tượng rằng, ngoài chính giá trị, bạn muốn in chỉ mục của mục trong danh sách lên màn hình trên mỗi lần lặp. Một cách để tiếp cận nhiệm vụ này là tạo một biến để lưu trữ chỉ mục và cập nhật nó trên mỗi lần lặp:sequences in Python.

May mắn thay, Python sườn

0 a
1 b
2 c
8 cho phép bạn tránh tất cả những vấn đề này. Nó có một chức năng tích hợp, có nghĩa là nó có sẵn trong mỗi phiên bản Python vì nó đã được thêm vào Python 2.3, trở lại vào năm 2003.built-in function, which means that it’s been available in every version of Python since it was added in Python 2.3, way back in 2003.

Sử dụng Python từ
0 a
1 b
2 c
8

Bạn có thể sử dụng

0 a
1 b
2 c
8 trong một vòng lặp theo cách tương tự như bạn sử dụng đối tượng có thể lặp lại gốc. Thay vì đặt trực tiếp sau
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
1 trong vòng
0 a
1 b
2 c
7, bạn đặt nó vào bên trong dấu ngoặc đơn của
0 a
1 b
2 c
8. Bạn cũng phải thay đổi biến vòng lặp một chút, như trong ví dụ này:

>>>

>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c

Khi bạn sử dụng

0 a
1 b
2 c
8, hàm cung cấp cho bạn hai biến vòng lặp:

  1. Số lượng của lần lặp hiện tạicount of the current iteration
  2. Giá trị của mục tại lần lặp hiện tạivalue of the item at the current iteration

Giống như với một vòng lặp

0 a
1 b
2 c
7 bình thường, các biến vòng lặp có thể được đặt tên là bất cứ điều gì bạn muốn chúng được đặt tên. Bạn sử dụng
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
6 và
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 trong ví dụ này, nhưng chúng có thể được đặt tên là
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
8 và
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
9 hoặc bất kỳ tên Python hợp lệ nào khác.

Với

0 a
1 b
2 c
8, bạn không cần phải nhớ truy cập vào vật phẩm từ Itable, và bạn không cần phải nhớ để nâng chỉ số ở cuối vòng lặp. Mọi thứ đều được xử lý tự động cho bạn bởi sự kỳ diệu của Python!

Python sườn

0 a
1 b
2 c
8 có một đối số bổ sung mà bạn có thể sử dụng để kiểm soát giá trị bắt đầu của số đếm. Theo mặc định, giá trị bắt đầu là
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 vì các loại chuỗi Python được lập chỉ mục bắt đầu bằng 0. Nói cách khác, khi bạn muốn truy xuất phần tử đầu tiên của danh sách, bạn sử dụng INDEX
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1:

>>>

>>> print[values[0]]
a

Khi bạn sử dụng

0 a
1 b
2 c
8, hàm cung cấp cho bạn hai biến vòng lặp:

>>>

>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c

Khi bạn sử dụng

0 a
1 b
2 c
8, hàm cung cấp cho bạn hai biến vòng lặp:

Số lượng của lần lặp hiện tại

Giá trị của mục tại lần lặp hiện tại

Giống như với một vòng lặp
0 a
1 b
2 c
7 bình thường, các biến vòng lặp có thể được đặt tên là bất cứ điều gì bạn muốn chúng được đặt tên. Bạn sử dụng
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
6 và
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
1 trong ví dụ này, nhưng chúng có thể được đặt tên là
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
8 và
>>> for count, value in enumerate[values]:
...     print[count, value]
...
0 a
1 b
2 c
9 hoặc bất kỳ tên Python hợp lệ nào khác.

Với

0 a
1 b
2 c
8, bạn không cần phải nhớ truy cập vào vật phẩm từ Itable, và bạn không cần phải nhớ để nâng chỉ số ở cuối vòng lặp. Mọi thứ đều được xử lý tự động cho bạn bởi sự kỳ diệu của Python!

Python sườn

0 a
1 b
2 c
8 có một đối số bổ sung mà bạn có thể sử dụng để kiểm soát giá trị bắt đầu của số đếm. Theo mặc định, giá trị bắt đầu là
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 vì các loại chuỗi Python được lập chỉ mục bắt đầu bằng 0. Nói cách khác, khi bạn muốn truy xuất phần tử đầu tiên của danh sách, bạn sử dụng INDEX
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1:

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
0

Bạn có thể thấy trong ví dụ này rằng việc truy cập

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 với chỉ mục
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 cung cấp cho phần tử đầu tiên,
>>> print[values[0]]
a
6. Tuy nhiên, có nhiều lần bạn có thể không muốn số lượng từ
0 a
1 b
2 c
8 bắt đầu tại
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1. Chẳng hạn, bạn có thể muốn in một số đếm tự nhiên dưới dạng đầu ra cho người dùng. Trong trường hợp này, bạn có thể sử dụng đối số
>>> print[values[0]]
a
9 cho
0 a
1 b
2 c
8 để thay đổi số lượng bắt đầu:

  1. Trong ví dụ này, bạn vượt qua
    >>> for count, value in enumerate[values, start=1]:
    ...     print[count, value]
    ...
    1 a
    2 b
    3 c
    
    1, bắt đầu
    >>> for count, value in enumerate[values]:
    ...     print[count, value]
    ...
    0 a
    1 b
    2 c
    
    6 với giá trị
    >>> for count, value in enumerate[values, start=1]:
    ...     print[count, value]
    ...
    1 a
    2 b
    3 c
    
    3 trên vòng lặp vòng đầu tiên. So sánh điều này với các ví dụ trước, trong đó
    >>> print[values[0]]
    a
    
    9 có giá trị mặc định là
    >>> index = 0
    
    >>> for value in values:
    ...     print[index, value]
    ...
    0 a
    0 b
    0 c
    
    1 và xem liệu bạn có thể phát hiện ra sự khác biệt hay không.
  2. Thực hành với Python
    0 a
    1 b
    2 c
    
    8
  3. Bạn nên sử dụng
    0 a
    1 b
    2 c
    
    8 bất cứ lúc nào bạn cần sử dụng đếm và một mục trong một vòng lặp. Hãy nhớ rằng
    0 a
    1 b
    2 c
    
    8 tăng số lượng trên mỗi lần lặp. Tuy nhiên, điều này chỉ giới hạn một chút tính linh hoạt của bạn. Vì số lượng là một số nguyên Python tiêu chuẩn, bạn có thể sử dụng nó theo nhiều cách. Trong một vài phần tiếp theo, bạn sẽ thấy một số cách sử dụng của
    0 a
    1 b
    2 c
    
    8.

Số lượng vật phẩm tự nhiên của các mặt hàng có thể

Trong phần trước, bạn đã thấy cách sử dụng
0 a
1 b
2 c
8 với
>>> print[values[0]]
a
9 để tạo số đếm tự nhiên để in cho người dùng.
0 a
1 b
2 c
8 cũng được sử dụng như thế này trong cơ sở mã Python. Bạn có thể thấy một ví dụ trong tập lệnh đọc các tệp REST và cho người dùng biết khi có vấn đề định dạng.

Ví dụ này được sửa đổi một chút từ

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
03. Don Tiết lo lắng quá nhiều về cách chức năng này kiểm tra các vấn đề. Vấn đề là hiển thị việc sử dụng
0 a
1 b
2 c
8 trong thế giới thực:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
1

Khi bạn sử dụng

0 a
1 b
2 c
8, hàm cung cấp cho bạn hai biến vòng lặp:

Số lượng của lần lặp hiện tại

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
2

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 có một đối số, được gọi là
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
23, đó phải là một loại đối tượng mà Python có thể lặp lại. Đầu tiên,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 được khởi tạo là một danh sách trống. Sau đó, bạn tạo vòng lặp
0 a
1 b
2 c
7 trên
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
23 với
0 a
1 b
2 c
8 và đặt
>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c
1.

Trong vòng lặp

0 a
1 b
2 c
7, bạn kiểm tra xem phần còn lại của việc chia
>>> index = 0

>>> for value in values:
...     print[index, value]
...     index += 1
...
0 a
1 b
2 c
5 cho
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
31 bằng không. Nếu có, thì bạn nối các mặt hàng vào
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6. Cuối cùng, bạn trở lại
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6.

Bạn có thể làm cho mã Pythonic hơn bằng cách sử dụng danh sách hiểu để làm điều tương tự trong một dòng mà không khởi tạo danh sách trống:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
3

Trong mã ví dụ này,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 sử dụng khả năng hiểu danh sách thay vì vòng
0 a
1 b
2 c
7 để trích xuất mọi mục từ danh sách có chỉ mục là số chẵn.

Bạn có thể xác minh rằng

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 hoạt động như mong đợi bằng cách lấy các mục được chỉ số từ một loạt các số nguyên từ
>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c
3 đến
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38. Kết quả sẽ là
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
39:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
4

Đúng như dự đoán,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 trả về các mục được lập chỉ mục từ
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
41. Đây là cách hiệu quả nhất để có được các số chẵn khi bạn làm việc với các số nguyên. Tuy nhiên, bây giờ bạn đã xác minh rằng
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 hoạt động đúng, bạn có thể nhận được các chữ cái được chỉ số của bảng chữ cái ASCII:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
5

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
43 là một chuỗi có tất cả hai mươi sáu chữ cái của bảng chữ cái ASCII. Gọi
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 và vượt qua
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
43 trả về một danh sách các chữ cái xen kẽ từ bảng chữ cái.

Chuỗi Python là các chuỗi, có thể được sử dụng trong các vòng lặp cũng như trong lập chỉ mục và cắt số nguyên. Vì vậy, trong trường hợp chuỗi, bạn có thể sử dụng dấu ngoặc vuông để đạt được chức năng tương tự như

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22 hiệu quả hơn:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
6

Sử dụng cắt chuỗi ở đây, bạn cung cấp chỉ mục bắt đầu

>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c
3, tương ứng với phần tử thứ hai. Không có chỉ số kết thúc sau khi đại tràng đầu tiên, vì vậy Python đi đến cuối chuỗi. Sau đó, bạn thêm đại tràng thứ hai theo sau là
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
31 để Python sẽ lấy mọi yếu tố khác.

Tuy nhiên, như bạn đã thấy trước đó, máy phát điện và máy lặp có thể được lập chỉ mục hoặc cắt lát, vì vậy bạn vẫn sẽ thấy

0 a
1 b
2 c
8 hữu ích. Để tiếp tục ví dụ trước, bạn có thể tạo một hàm trình tạo mang lại các chữ cái của bảng chữ cái theo yêu cầu:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
7

Trong ví dụ này, bạn xác định

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
50, một hàm trình tạo mang lại các chữ cái của bảng chữ cái từng người một khi hàm được sử dụng trong một vòng lặp. Các chức năng của Python, cho dù là máy phát điện hoặc các chức năng thông thường, có thể được truy cập bằng cách lập chỉ mục khung vuông. Bạn thử điều này trên dòng thứ hai, và nó tăng
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
51.

Tuy nhiên, bạn có thể sử dụng các hàm của máy phát trong các vòng lặp và bạn làm như vậy trên dòng cuối cùng bằng cách chuyển

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
50 đến
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
22. Bạn có thể thấy rằng kết quả giống như hai ví dụ trước.

Hiểu Python
0 a
1 b
2 c
8

Trong một vài phần cuối cùng, bạn đã thấy các ví dụ về thời điểm và cách sử dụng

0 a
1 b
2 c
8 cho lợi thế của bạn. Bây giờ bạn đã có một xử lý các khía cạnh thực tế của
0 a
1 b
2 c
8, bạn có thể tìm hiểu thêm về cách thức hoạt động của chức năng.

Để hiểu rõ hơn về cách thức hoạt động của

0 a
1 b
2 c
8, bạn có thể triển khai phiên bản của riêng mình với Python. Phiên bản
0 a
1 b
2 c
8 của bạn có hai yêu cầu. Nó nên:

  1. Chấp nhận giá trị số lượng và giá trị khởi động là đối số
  2. Gửi lại một tuple với giá trị đếm hiện tại và mục được liên kết từ có thể điều chỉnh được

Một cách để viết một chức năng Gặp gỡ các thông số kỹ thuật này được đưa ra trong tài liệu Python:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
8

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
59 có hai đối số,
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
60 và
>>> print[values[0]]
a
9. Giá trị mặc định của
>>> print[values[0]]
a
9 là
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1. Bên trong định nghĩa hàm, bạn khởi tạo
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
64 là giá trị của
>>> print[values[0]]
a
9 và chạy vòng lặp
0 a
1 b
2 c
7 trên
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
60.

Đối với mỗi

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
68 trong
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
60, bạn
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
70 kiểm soát trở lại vị trí gọi và gửi lại các giá trị hiện tại của
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
64 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
68. Cuối cùng, bạn tăng
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
64 để sẵn sàng cho lần lặp tiếp theo. Bạn có thể thấy
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
59 hoạt động ở đây:

>>>

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
9

Đầu tiên, bạn tạo một danh sách bốn mùa để làm việc. Tiếp theo, bạn cho thấy rằng việc gọi

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
59 với
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
76 là
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
60 tạo ra một đối tượng máy phát. Điều này là do bạn sử dụng từ khóa
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
70 để gửi lại giá trị cho người gọi.

Cuối cùng, bạn tạo hai danh sách từ

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
59, một trong đó giá trị bắt đầu được để lại là mặc định,
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 và một trong đó
>>> print[values[0]]
a
9 được thay đổi thành
>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c
3. Trong cả hai trường hợp, bạn kết thúc với một danh sách các bộ dữ liệu trong đó phần tử đầu tiên của mỗi tuple là số lượng và phần tử thứ hai là giá trị từ
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
76.

Mặc dù bạn có thể thực hiện một hàm tương đương cho

0 a
1 b
2 c
8 chỉ trong một vài dòng mã python, mã thực tế cho
0 a
1 b
2 c
8 được viết bằng C. Điều này có nghĩa là nó siêu nhanh và hiệu quả.

Giải nén các đối số với
0 a
1 b
2 c
8

Khi bạn sử dụng

0 a
1 b
2 c
8 trong vòng lặp
0 a
1 b
2 c
7, bạn bảo Python sử dụng hai biến, một cho số đếm và một cho chính giá trị. Bạn có thể làm điều này bằng cách sử dụng khái niệm Python có tên là đối số giải nén.argument unpacking.

Đối số Giải nén là ý tưởng rằng một tuple có thể được chia thành một số biến tùy thuộc vào độ dài của chuỗi. Chẳng hạn, bạn có thể giải nén hai phần tử thành hai biến:

>>>

0 a
1 b
2 c
0

Đầu tiên, bạn tạo một tuple với hai yếu tố,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7. Sau đó, bạn giải nén bộ điều đó thành
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
91 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
92, mỗi cái được gán một trong các giá trị từ tuple.

Khi bạn gọi

0 a
1 b
2 c
8 và truyền một chuỗi các giá trị, Python trả về một trình lặp. Khi bạn hỏi trình lặp lại giá trị tiếp theo của nó, nó sẽ mang lại một bộ phận với hai yếu tố. Yếu tố đầu tiên của tuple là đếm và phần tử thứ hai là giá trị từ chuỗi bạn đã vượt qua:iterator. When you ask the iterator for its next value, it yields a tuple with two elements. The first element of the tuple is the count, and the second element is the value from the sequence that you passed:

>>>

0 a
1 b
2 c
1

Đầu tiên, bạn tạo một tuple với hai yếu tố,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7. Sau đó, bạn giải nén bộ điều đó thành
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
91 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
92, mỗi cái được gán một trong các giá trị từ tuple.

Khi bạn gọi

0 a
1 b
2 c
8 và truyền một chuỗi các giá trị, Python trả về một trình lặp. Khi bạn hỏi trình lặp lại giá trị tiếp theo của nó, nó sẽ mang lại một bộ phận với hai yếu tố. Yếu tố đầu tiên của tuple là đếm và phần tử thứ hai là giá trị từ chuỗi bạn đã vượt qua:

Trong ví dụ này, bạn tạo một danh sách có tên

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 với hai yếu tố,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8. Sau đó, bạn chuyển
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 đến
0 a
1 b
2 c
8 và gán giá trị trả về cho
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99. Khi bạn in
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99, bạn có thể thấy rằng đó là một thể hiện của
0 a
1 b
2 c
8 với một địa chỉ bộ nhớ cụ thể.

Sau đó, bạn sử dụng Python, tích hợp

0 a
1 b
2 c
02 để nhận giá trị tiếp theo từ
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99. Giá trị đầu tiên mà
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99 trả về là một tuple với số lượng
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 và phần tử đầu tiên từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6, đó là
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7.

Gọi

0 a
1 b
2 c
02 một lần nữa trên
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99 mang lại một bộ khác, lần này với số lượng
>>> for count, value in enumerate[values, start=1]:
...     print[count, value]
...
1 a
2 b
3 c
3 và phần tử thứ hai từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8. Cuối cùng, gọi
0 a
1 b
2 c
02 Một lần nữa tăng
0 a
1 b
2 c
14 vì không có thêm giá trị nào được trả về từ
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99.

Khi một ITEBLE được sử dụng trong vòng lặp

0 a
1 b
2 c
7, Python sẽ tự động gọi
0 a
1 b
2 c
02 khi bắt đầu mỗi lần lặp cho đến khi
0 a
1 b
2 c
14 được nâng lên. Python gán giá trị mà nó truy xuất từ ​​biến có thể lặp lại cho biến vòng lặp.

>>>

0 a
1 b
2 c
2

Đầu tiên, bạn tạo một tuple với hai yếu tố,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7. Sau đó, bạn giải nén bộ điều đó thành
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
91 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
92, mỗi cái được gán một trong các giá trị từ tuple.

Khi bạn gọi

0 a
1 b
2 c
8 và truyền một chuỗi các giá trị, Python trả về một trình lặp. Khi bạn hỏi trình lặp lại giá trị tiếp theo của nó, nó sẽ mang lại một bộ phận với hai yếu tố. Yếu tố đầu tiên của tuple là đếm và phần tử thứ hai là giá trị từ chuỗi bạn đã vượt qua:nested argument unpacking:

>>>

0 a
1 b
2 c
3

Đầu tiên, bạn tạo một tuple với hai yếu tố,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7. Sau đó, bạn giải nén bộ điều đó thành
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
91 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
92, mỗi cái được gán một trong các giá trị từ tuple.

Khi bạn gọi

0 a
1 b
2 c
8 và truyền một chuỗi các giá trị, Python trả về một trình lặp. Khi bạn hỏi trình lặp lại giá trị tiếp theo của nó, nó sẽ mang lại một bộ phận với hai yếu tố. Yếu tố đầu tiên của tuple là đếm và phần tử thứ hai là giá trị từ chuỗi bạn đã vượt qua:

>>>

0 a
1 b
2 c
4

Đầu tiên, bạn tạo một tuple với hai yếu tố,

lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
38 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7. Sau đó, bạn giải nén bộ điều đó thành
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
91 và
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
92, mỗi cái được gán một trong các giá trị từ tuple.

Khi bạn gọi
0 a
1 b
2 c
8 và truyền một chuỗi các giá trị, Python trả về một trình lặp. Khi bạn hỏi trình lặp lại giá trị tiếp theo của nó, nó sẽ mang lại một bộ phận với hai yếu tố. Yếu tố đầu tiên của tuple là đếm và phần tử thứ hai là giá trị từ chuỗi bạn đã vượt qua:

Trong ví dụ này, bạn tạo một danh sách có tên

>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 với hai yếu tố,
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7 và
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
8. Sau đó, bạn chuyển
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6 đến
0 a
1 b
2 c
8 và gán giá trị trả về cho
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99. Khi bạn in
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99, bạn có thể thấy rằng đó là một thể hiện của
0 a
1 b
2 c
8 với một địa chỉ bộ nhớ cụ thể.

Sau đó, bạn sử dụng Python, tích hợp

0 a
1 b
2 c
02 để nhận giá trị tiếp theo từ
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99. Giá trị đầu tiên mà
lst = ["a", "b", "c"]

for index, item in enumerate[lst]:
  print[index, item]
99 trả về là một tuple với số lượng
>>> index = 0

>>> for value in values:
...     print[index, value]
...
0 a
0 b
0 c
1 và phần tử đầu tiên từ
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
6, đó là
>>> values = ["a", "b", "c"]

>>> for value in values:
...     print[value]
...
a
b
c
7.

  • Gọi
    0 a
    1 b
    2 c
    
    02 một lần nữa trên
    lst = ["a", "b", "c"]
    
    for index, item in enumerate[lst]:
      print[index, item]
    
    99 mang lại một bộ khác, lần này với số lượng
    >>> for count, value in enumerate[values, start=1]:
    ...     print[count, value]
    ...
    1 a
    2 b
    3 c
    
    3 và phần tử thứ hai từ
    >>> values = ["a", "b", "c"]
    
    >>> for value in values:
    ...     print[value]
    ...
    a
    b
    c
    
    6,
    >>> values = ["a", "b", "c"]
    
    >>> for value in values:
    ...     print[value]
    ...
    a
    b
    c
    
    8. Cuối cùng, gọi
    0 a
    1 b
    2 c
    
    02 Một lần nữa tăng
    0 a
    1 b
    2 c
    
    14 vì không có thêm giá trị nào được trả về từ
    lst = ["a", "b", "c"]
    
    for index, item in enumerate[lst]:
      print[index, item]
    
    99.
    0 a
    1 b
    2 c
    
    8
    in your
    0 a
    1 b
    2 c
    
    7 loops
  • Khi một ITEBLE được sử dụng trong vòng lặp
    0 a
    1 b
    2 c
    
    7, Python sẽ tự động gọi
    0 a
    1 b
    2 c
    
    02 khi bắt đầu mỗi lần lặp cho đến khi
    0 a
    1 b
    2 c
    
    14 được nâng lên. Python gán giá trị mà nó truy xuất từ ​​biến có thể lặp lại cho biến vòng lặp.real-world examples
  • Nếu một ITEBER trả về một tuple, thì bạn có thể sử dụng đối số giải nén để gán các phần tử của tuple cho nhiều biến. Đây là những gì bạn đã làm trước đó trong hướng dẫn này bằng cách sử dụng hai biến vòng lặp.argument unpacking
  • Một lần khác, bạn có thể đã thấy đối số giải nén với vòng lặp
    0 a
    1 b
    2 c
    
    7 là với
    0 a
    1 b
    2 c
    
    20 tích hợp, cho phép bạn lặp lại qua hai hoặc nhiều chuỗi cùng một lúc. Trên mỗi lần lặp,
    0 a
    1 b
    2 c
    
    20 trả về một bộ thu thập các yếu tố từ tất cả các chuỗi đã được thông qua:equivalent function to
    0 a
    1 b
    2 c
    
    8

Bằng cách sử dụng

0 a
1 b
2 c
20, bạn có thể lặp lại thông qua
0 a
1 b
2 c
23,
0 a
1 b
2 c
24 và
0 a
1 b
2 c
25 cùng một lúc. Trong vòng
0 a
1 b
2 c
7, bạn gán phần tử từ
0 a
1 b
2 c
23 đến
0 a
1 b
2 c
28, từ
0 a
1 b
2 c
24 đến
0 a
1 b
2 c
30 và từ
0 a
1 b
2 c
25 đến
0 a
1 b
2 c
32. Sau đó, bạn in ba giá trị.

Bạn có thể kết hợp

0 a
1 b
2 c
20 và
0 a
1 b
2 c
8 bằng cách sử dụng giải nén đối số lồng nhau: This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Looping With Python enumerate[]

Làm thế nào để bạn thêm một bộ đếm trong Python?

Khởi tạo một bộ đếm python..
Sử dụng một danh sách hoặc các thùng chứa tương tự. Chúng ta có thể chuyển danh sách python của các giá trị cho Counter []. ....
Sử dụng từ điển Python. Chúng ta cũng có thể nói thủ công Python phản hồi số lượng các giá trị, sử dụng từ điển trong Python. ....
Sử dụng từ khóa đối số ..

Làm thế nào để bạn thêm một số lượng vào một vòng lặp?

Bạn chỉ cần a] khởi tạo bộ đếm trước vòng lặp, b] sử dụng & thay vì và trong điều kiện IF của bạn, c] thực sự thêm 1 vào bộ đếm.Vì thêm 0 cũng giống như không làm gì, bạn không phải lo lắng về "khác".

Làm thế nào để bạn đặt một quầy trong vòng lặp một thời gian?

Một biến bộ đếm được tạo và khởi tạo thành giá trị bắt đầu trước khi vòng lặp được bắt đầu.Điều kiện được kiểm tra trước mỗi lần lặp của vòng lặp là liệu bộ đếm có đạt được giá trị được xác định trước hay không.Bản thân bộ đếm được tăng lên bên trong vòng lặp trong khi.. The condition that is tested before each iteration of the loop is whether the counter has reached a predetermined value. The counter itself is incremented inside the while loop.

Làm thế nào để bạn đếm một danh sách trong A For Loop Python?

Sử dụng cho vòng lặp để có được số lượng các phần tử trong danh sách, bạn sẽ lặp lại danh sách và tăng biến bộ đếm trong mỗi lần lặp.Khi lần lặp kết thúc, bạn sẽ trả về biến đếm, có tổng số phần tử trong danh sách.iterate over the list and increment the counter variable during each iteration. Once the iteration is over, you'll return the count variable, which has the total number of elements in the list.

Bài Viết Liên Quan

Chủ Đề