× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Hàm enumerate() trong Python - Cách thực hiện hàm enumerate()

29/12/2022 01:20

Trong khi lặp qua một danh sách trong Python, bạn sẽ thường xuyên cần theo dõi các chỉ mục của phần tử danh sách. Chức enumerate()năng cung cấp một cách hữu ích để làm điều này. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng chức năng này để đưa các vòng lặp của bạn lên một tầm cao mới.

Hàm enumerate() của Python

Trước khi bắt đầu, chúng ta nên trình bày một số thông tin cơ bản về enumerate()chức năng này. Cú pháp trông như thế này:

enumerate(iterable, start=0)

Nó cần một lần lặp bắt buộc như danh sách, mảng hoặc bộ. Ngoài ra còn có một đối số tùy chọn xác định giá trị bắt đầu của bộ đếm chỉ mục, giá trị này mặc định là 0.

Vòng lặp với vòng lặp for

Vòng lặp trong Python khá cơ bản và trước đây chúng ta đã thảo luận về nó ở một vài chỗ. Để đọc một số thông tin cơ bản, hãy xem CÁCH VIẾT VÒNG LẶP FOR TRONG PYTHON . Và bài viết của chúng tôi về 7 CÁCH ĐỂ LẶP QUA DANH SÁCH TRONG PYTHON là một bản tóm tắt tốt về các phương pháp chúng tôi sẽ sử dụng ở đây.

Giả sử chúng ta có một danh sách các từ mà chúng ta muốn in ra. Chúng ta có thể sử dụng vòng lặp for để lặp qua các phần tử và sử dụng print()câu lệnh để in chúng ra màn hình:

>>> words = ['here''are''some''words']
>>> for word in words:
...     print(word)

Kết quả:

here
are
some
words

Lưu ý rằng các phần tử thuộc loại chuỗi. Bạn có thể kiểm tra bằng type()chức năng có sẵn.

Ngoài ra, chúng ta có thể in ra chỉ mục của từng phần tử trong danh sách bằng cách sử dụng hàm range()and len():

>>> for in range(len(words)):
...     print(i)

Kết quả:

0
1
2
3

Ở đây, loại chỉ số là một số nguyên. Nhưng có một số trường hợp bạn muốn in cả phần tử và chỉ mục trong cùng một vòng lặp. Một cách là tạo bộ đếm và tăng bộ đếm sau mỗi lần lặp:

>>> i = 0
>>> for word in words:
...     print(i, word)
...     i+=1

Kết quả:

0 here
1 are
2 some
3 words

Chúng ta đang sử dụng toán tử gán phép cộng (+=) để tăng bộ đếm sau mỗi lần lặp. Điều này hoàn thành công việc, nhưng nó không phải là cách hiệu quả nhất.

Vòng lặp với enumerate()

Đây là nơi enumerate()chức năng xuất hiện để làm cho cuộc sống của chúng ta dễ dàng hơn. Thay vì tạo bộ đếm và lặp lại các phần tử, chúng ta có thể nhận được kết quả tương tự hiệu quả hơn bằng cách sử dụng enumerate():

>>> for i, word in enumerate(words):
...     print(i, word)

Kết quả:

0 here
1 are
2 some
3 words

Các chỉ số bắt đầu từ giá trị mặc định là 0 và được in dưới dạng số nguyên. Các từ được in dưới dạng chuỗi.

Hãy nâng cao độ phức tạp bằng cách xem xét trường hợp sử dụng sau. Chúng tôi có kết quả của cuộc chạy đua 100m, và chúng tôi muốn in chúng ra. Chúng tôi muốn in ra 3 điều: vị trí của người chạy, tên của họ và thời gian của họ. Các kết quả được lưu trữ trong một danh sách các bộ dữ liệu:

>>> results = [('Thompson-Herah'10.610), ('Fraser-Pryce'10.740), ('Jackson'10.760)]

Chúng ta có thể sử dụng những gì chúng ta đã học được cho đến nay để đạt được điều này chỉ trong một vài dòng mã Python:

>>> for i, data in enumerate(results, start=1):
...     name, time = data[0], data[1]
...     print('{}. {}, {}s'.format(i, name, time))

Kết quả:

1. Thompson-Herah, 10.61s
2. Fraser-Pryce, 10.74s
3. Jackson, 10.76s

Vị trí được in bằng cách bắt đầu bộ đếm từ 1 thông qua start=1đối số tùy chọn. Tên và thời gian là phần tử thứ nhất và thứ hai của bộ dữ liệu. Lưu ý việc sử dụng định dạng chuỗi để in ra kết quả một cách độc đáo.

May mắn cho chúng tôi, danh sách kết quả đã được sắp xếp trước theo thời gian nhanh nhất đến chậm nhất. Nếu không phải như vậy, bạn có thể sắp xếp các bộ trong danh sách theo phần tử đầu tiên (tên) hoặc phần tử thứ hai (thời gian). Để làm điều này, bạn sẽ cần tận dụng sorted()chức năng tích hợp sẵn. Đây là một chút khó khăn, nhưng hãy thử nó. 

Thực hành Sử dụng enumerate() trong Python

Trong bài viết này, chúng tôi đã chỉ cho bạn cách lặp qua một danh sách và in ra chỉ mục và phần tử bằng cách sử dụng enumerate()hàm. Chúng tôi cũng đã chỉ cho bạn cách áp dụng điều này cho một danh sách các bộ.

Chúng tôi muốn khuyến khích bạn sử dụng những gì bạn đã học được trong bài viết này, để bạn có bài tập về nhà sau đây. Đầu tiên, tải xuống bộ dữ liệu MARATHON-DATA . Đây là tệp CSV chứa tuổi, giới tính, khoảng cách và thời gian cuối cùng của những người tham gia cuộc thi marathon. Nhiệm vụ của bạn là đọc dữ liệu vào Python và in dữ liệu cho 10 đối thủ nhanh nhất và 10 đối thủ chậm nhất