Bắt đầu ngayBắt đầu miễn phí

Luyện tập built-in: enumerate()

Trong bài tập này, bạn sẽ luyện cách dùng hàm dựng sẵn enumerate() của Python. Hàm này hữu ích khi bạn muốn có một danh sách kèm chỉ mục. Ví dụ, giả sử bạn có một danh sách những người đến dự bữa tiệc bạn tổ chức. Danh sách được sắp theo thứ tự đến (Jerry đến đầu tiên, tiếp theo là Kramer, v.v.):

names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']

Nếu bạn muốn gắn một chỉ mục biểu thị thứ tự đến của mỗi người, bạn có thể dùng vòng lặp for sau:

indexed_names = []
for i in range(len(names)):
    index_name = (i, names[i])
    indexed_names.append(index_name)

[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]

Tuy nhiên, đây không phải là cách hiệu quả nhất. Hãy khám phá cách dùng enumerate() để làm việc này hiệu quả hơn.

Bài tập này là một phần của khóa học

Viết mã Python hiệu quả

Xem khóa học

Hướng dẫn bài tập

  • Thay vì dùng for i in range(len(names)), hãy cập nhật vòng lặp for để dùng i làm biến chỉ mục và name làm biến lặp, đồng thời sử dụng enumerate().
  • Viết lại vòng lặp for trước đó bằng enumerate() và list comprehension để tạo danh sách mới indexed_names_comp.
  • Tạo thêm một danh sách (indexed_names_unpack) bằng cách dùng ký tự sao (*) để giải nén enumerate object được tạo khi dùng enumerate() trên names. Lần này, bắt đầu chỉ mục cho enumerate() từ một thay vì từ không.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
    index_name = (i,name)
    indexed_names.append(index_name) 
print(indexed_names)

# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)

# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)
Chỉnh sửa và Chạy Mã