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ả
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ùngilàm biến chỉ mục vànamelàm biến lặp, đồng thời sử dụngenumerate(). - Viết lại vòng lặp for trước đó bằng
enumerate()và list comprehension để tạo danh sách mớiindexed_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ùngenumerate()trênnames. Lần này, bắt đầu chỉ mục choenumerate()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)