arrows-rotateEnumerate và Zip

1. Giới thiệu

enumerate()zip() là hai built-in functions rất hữu ích trong Python giúp làm việc với iterables (lists, tuples, strings) hiệu quả hơn.

Tại sao cần học?

  • ✅ Duyệt qua items và index cùng lúc

  • ✅ Kết hợp nhiều iterables lại với nhau

  • ✅ Code ngắn gọn và dễ đọc hơn

  • ✅ Tránh dùng range(len(list)) - không Pythonic!

2. enumerate() - Đánh số index

2.1 - Vấn đề cần giải quyết

# ❌ CÁCH CŨ - Không tốt
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    print(f"{i}: {fruits[i]}")

# ✅ CÁCH TỐT - Dùng enumerate
for i, fruit in enumerate(fruits):
    print(f"{i}: {fruit}")

2.2 - Cú pháp

  • iterable: List, tuple, string, v.v.

  • start: Số bắt đầu (mặc định là 0)

2.3 - Ví dụ cơ bản

2.4 - enumerate() trả về gì?

3. Ví dụ thực tế với enumerate()

Ví dụ 1: Hiển thị menu

Ví dụ 2: Tìm vị trí phần tử

Ví dụ 3: Đánh số dòng file

Ví dụ 4: Tạo dictionary với index

Ví dụ 5: Xử lý list với điều kiện

4. zip() - Kết hợp iterables

4.1 - Vấn đề cần giải quyết

4.2 - Cú pháp

  • *iterables: Một hoặc nhiều iterables (lists, tuples, strings)

  • Trả về: Iterator chứa tuples

4.3 - Ví dụ cơ bản

4.4 - zip() trả về gì?

5. zip() với độ dài khác nhau

5.1 - zip() dừng ở iterable ngắn nhất

5.2 - Dùng itertools.zip_longest() để lấy hết

6. Ví dụ thực tế với zip()

Ví dụ 1: Tạo dictionary từ 2 lists

Ví dụ 2: Tính tổng từng cột

Ví dụ 3: Unzip (tách tuple)

Ví dụ 4: So sánh 2 lists

Ví dụ 5: Transpose matrix

7. Kết hợp enumerate() và zip()

7.1 - enumerate() với zip()

7.2 - Ví dụ phức tạp hơn

8. Ví dụ tổng hợp

Ví dụ 1: Quản lý sản phẩm

Ví dụ 2: Tìm học sinh điểm cao nhất

Ví dụ 3: Parallel iteration với nhiều lists

9. So sánh enumerate() vs zip()

Đặc điểm
enumerate()
zip()

Mục đích

Thêm index cho iterable

Kết hợp nhiều iterables

Input

1 iterable

Nhiều iterables

Output

(index, item)

(item1, item2, ...)

Độ dài

Giữ nguyên

Dừng ở ngắn nhất

Sử dụng

Khi cần index

Khi cần kết hợp

10. Tips và Best Practices

1. Tránh dùng range(len())

2. Dùng zip() khi kết hợp lists

3. Unpacking với *

4. Cẩn thận với độ dài khác nhau

5. enumerate() với string

11. Bài tập thực hành

Bài 1: Tìm vị trí tất cả các số chẵn

Bài 2: Tạo bảng nhân

Bài 3: Kết hợp enumerate() và zip()

Bài giảng trên YouTube

Cập nhật sau

Last updated