Cách sử dụng Enumerate trong Python (Lặp lại với chỉ số)
Tìm hiểu cách sử dụng hàm enumerate() trong Python. Nhận cả chỉ mục và giá trị khi lặp qua danh sách với các ví dụ rõ ràng.
Tổng quan
Khi lặp lại một danh sách, bộ dữ liệu hoặc chuỗi, bạn thường cần theo dõi chỉ mục hiện tại của từng mục cùng với chính mục đó. Mẫu phổ biến dành cho người mới bắt đầu là sử dụng một biến đếm riêng biệt được tăng theo cách thủ công hoặc sử dụng `range(len(my_list))` để lặp qua các chỉ mục. Tuy nhiên, Python cung cấp một giải pháp tích hợp, Pythonic và thanh lịch hơn nhiều: hàm `enumerate()`.
Hàm `enumerate()` lấy bất kỳ lần lặp nào làm đối số và trả về một đối tượng liệt kê, tạo ra các cặp bộ giá trị chỉ mục. Bằng cách sử dụng giải nén tuple trong vòng lặp `for`, bạn có thể trích xuất chỉ mục và mục cùng một lúc. Điều này loại bỏ hoàn toàn sự cần thiết của các biến đếm thủ công và dấu ngoặc chỉ mục, làm cho mã của bạn sạch hơn đáng kể và ít xảy ra lỗi từng lỗi một.
Theo mặc định, `enumerate()` bắt đầu đếm các chỉ số từ `0`. Tuy nhiên, bạn có thể chuyển chỉ mục bắt đầu tùy chỉnh bằng cách sử dụng đối số từ khóa `start` tùy chọn (ví dụ: `enumerate(items, start=1)`). Điều này cực kỳ hữu ích khi hiển thị số danh sách cho người dùng, vì mọi người thường mong đợi danh sách bắt đầu đếm từ 1 thay vì 0.
Đầu ra mã & thực thi
Tập lệnh này minh họa việc lặp lại các danh sách bằng cách sử dụng phép liệt kê để lấy các cặp mục chỉ mục, bắt đầu từ 0 và 1.
fruits = ["apple", "banana", "cherry"]
# 1. Standard enumeration (starts at 0)
print("--- Standard Enumeration ---")
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}")
# 2. Enumeration starting at a custom index (e.g., 1)
print("\n--- Starting at 1 ---")
for num, fruit in enumerate(fruits, start=1):
print(f"Item #{num}: {fruit}")--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry
--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherryTriển khai từng bước
- Chuyển danh sách của bạn (hoặc bất kỳ lần lặp nào) tới hàm enumerate() tích hợp.
- Giải nén các bộ dữ liệu được trả về trong vòng lặp for bằng cách sử dụng cú pháp cho chỉ mục, giá trị trong enumerate(list).
- Cung cấp tham số bắt đầu (ví dụ: start=1) để sửa đổi giá trị bộ đếm chỉ mục ban đầu.
Câu hỏi thường gặp
Enumerate() có sửa đổi danh sách gốc không?
Không, enumerate() trả về một đối tượng lặp lười biếng và giữ nguyên danh sách ban đầu hoàn toàn không được sửa đổi.
Tôi có thể sử dụng enumerate() với từ điển không?
Có, nhưng việc lặp lại trực tiếp từ điển sẽ mang lại khóa của nó. Để lặp lại chỉ mục-khóa-giá trị, hãy sử dụng: for i, (k, v) trong enumerate(my_dict.items()):.
Chủ đề liên quan
Tìm hiểu cách lặp hoặc lặp qua từ điển Python. Khám phá các phương pháp lặp qua các khóa, giá trị và cặp khóa-giá trị bằng các ví dụ rõ ràng, có thể chạy được.
Cách tìm độ dài của danh sách trong PythonTìm hiểu cách tìm độ dài của danh sách trong Python bằng hàm len(). Hiểu độ phức tạp về thời gian O(1) và số lần kiểm tra.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Vòng lặp Python
Tìm hiểu cách sử dụng vòng lặp Python để lặp lại dữ liệu. Nắm vững các phương pháp hay nhất về vòng lặp for, while, ngắt, tiếp tục và lặp bằng các ví dụ tương tác.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.