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.

Hãy thử Giải pháp này trong Trình chỉnh sửa

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}")
Đầu ra thiết bị đầu cuối
--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry

--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherry

Triể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à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.