×

Sử dụng các hàm tích hợp như map, filter, reduce trong Python

Trong Python, các hàm tích hợp sẵn như map, filterreduce là những công cụ mạnh mẽ, giúp đơn giản hóa việc xử lý và chuyển đổi dữ liệu. Chúng thân thiện với người dùng và rất dễ sử dụng khi cần thao tác trên các dãy số liệu hoặc danh sách.

Hàm map

Hàm map được sử dụng để áp dụng một hàm đã cho lên từng phần tử của một iterable như danh sách hoặc tuple. Kết quả là một đối tượng map (một kiểu iterator) chứa kết quả sau khi áp dụng hàm.

Ví dụ:

# Hàm nhân đôi giá trị
def multiply_by_two(x):
    return x * 2

numbers = [1, 2, 3, 4, 5]
doubled_numbers = map(multiply_by_two, numbers)
print(list(doubled_numbers))  # Output: [2, 4, 6, 8, 10]

Hàm filter

Hàm filter được sử dụng để lọc các phần tử của một iterable dựa trên một điều kiện nhất định được xác định bởi một hàm cung cấp. Hàm này trả về một đối tượng filter, chứa các phần tử thỏa mãn điều kiện.

Ví dụ:

# Hàm kiểm tra số chẵn
def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)
print(list(even_numbers))  # Output: [2, 4, 6]

Hàm reduce

Hàm reduce thuộc module functools và được sử dụng để áp dụng một hàm lên cả danh sách (hoặc một iterable), từ đó giảm dần nó thành một giá trị duy nhất. Hàm cần cung cấp phải nhận 2 tham số và tiến hành gom nhóm các phần tử liên tiếp.

Ví dụ:

from functools import reduce

# Hàm cộng 2 số
def add(x, y):
    return x + y

numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(add, numbers)
print(sum_of_numbers)  # Output: 15

Kết hợp các hàm

Đôi khi, việc kết hợp cả ba hàm này sẽ giúp giải quyết các vấn đề phức tạp một cách dễ dàng và hiệu quả.

Ví dụ:

from functools import reduce

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Nhân đôi giá trị của các số lẻ và tính tổng
result = reduce(add, map(multiply_by_two, filter(lambda x: x % 2 != 0, numbers)))
print(result)  # Output: 50

Kết luận

Việc sử dụng các hàm tích hợp như map, filter, và reduce không chỉ giúp code Python trở nên gọn gàng và dễ đọc hơn, mà còn tăng cường hiệu suất xử lý dữ liệu. Những hàm này đặc biệt hữu ích trong việc xử lý các phép biến đổi và thao tác phức tạp trên dữ liệu lớn mà không cần viết các vòng lặp phức tạp. Để trở thành một lập trình viên Python hiệu quả, việc hiểu và áp dụng chúng là một kỹ năng quan trọng.

Comments