Giới thiệu
Hàm map() trong Python là một công cụ hữu ích giúp áp dụng một hàm nào đó lên từng phần tử của một iterable (danh sách, bộ dữ liệu, v.v.) mà không cần sử dụng vòng lặp thủ công. Hàm này giúp viết mã ngắn gọn hơn, tăng hiệu suất xử lý dữ liệu và giảm thiểu sai sót.

Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về hàm map(), cách sử dụng cũng như các ứng dụng thực tế trong lập trình Python.
1. Cú pháp của hàm map()
Hàm map() có cú pháp như sau:
map(hàm, iterable)
Trong đó:
hàm: Là hàm cần áp dụng lên từng phần tử của iterable.iterable: Là danh sách, bộ dữ liệu hoặc đối tượng có thể lặp qua.
Nếu hàm được sử dụng có nhiều tham số, chúng ta có thể truyền vào nhiều iterable cùng một lúc.
2. Cách sử dụng map() trong Python
2.1 Chuyển đổi danh sách chuỗi thành số nguyên
Một trong những cách sử dụng phổ biến nhất của map() là chuyển đổi danh sách chuỗi thành danh sách số nguyên.
s = ['1', '2', '3', '4'] res = map(int, s) print(list(res))
Kết quả:
[1, 2, 3, 4]
Giải thích:
- Hàm
intđược áp dụng lên từng phần tử của danh sáchs, chuyển đổi mỗi chuỗi thành số nguyên. - Kết quả trả về là một đối tượng map, cần chuyển thành danh sách bằng
list().
2.2 Dùng map() với hàm tùy chỉnh
Hàm map() có thể sử dụng với các hàm do người dùng định nghĩa để thực hiện các thao tác tùy chỉnh trên dữ liệu.
a = [1, 2, 3, 4]
# Hàm nhân đôi giá trị
def double(val):
return val * 2
res = list(map(double, a))
print(res)
Kết quả:
[2, 4, 6, 8]
Giải thích:
- Hàm
double()nhân đôi giá trị của mỗi phần tử trong danh sácha. map()áp dụng hàm này lên toàn bộ danh sácha.
2.3 Sử dụng map() với lambda
Thay vì định nghĩa một hàm riêng, chúng ta có thể sử dụng hàm lambda để viết mã ngắn gọn hơn.
a = [1, 2, 3, 4] res = list(map(lambda x: x * 2, a)) print(res)
Kết quả:
[2, 4, 6, 8]
Giải thích:
- Hàm
lambda x: x * 2giúp nhân đôi giá trị của mỗi phần tử trong danh sácha.
2.4 Sử dụng map() với nhiều iterable
Nếu hàm cần áp dụng có nhiều tham số, chúng ta có thể truyền vào nhiều danh sách cùng một lúc.
a = [1, 2, 3] b = [4, 5, 6] res = map(lambda x, y: x + y, a, b) print(list(res))
Kết quả:
[5, 7, 9]
Giải thích:
- Hàm
lambda x, y: x + ynhận hai giá trị từ danh sáchavàbđể cộng lại.
3. Ứng dụng thực tế của map()
3.1 Chuyển đổi chữ thường thành chữ hoa
Dưới đây là cách sử dụng map() để chuyển đổi tất cả phần tử trong danh sách về dạng chữ hoa.
fruits = ['apple', 'banana', 'cherry'] res = map(str.upper, fruits) print(list(res))
Kết quả:
['APPLE', 'BANANA', 'CHERRY']
3.2 Trích xuất ký tự đầu tiên của chuỗi
words = ['apple', 'banana', 'cherry'] res = map(lambda s: s[0], words) print(list(res))
Kết quả:
['a', 'b', 'c']
Giải thích:
- Hàm
lambda s: s[0]lấy ký tự đầu tiên của mỗi từ trong danh sách.
3.3 Xóa khoảng trắng thừa trong chuỗi
s = [' hello ', ' world ', ' python '] res = map(str.strip, s) print(list(res))
Kết quả:
['hello', 'world', 'python']
Giải thích:
- Hàm
str.striploại bỏ khoảng trắng thừa ở đầu và cuối mỗi chuỗi.
3.4 Chuyển đổi nhiệt độ từ Celsius sang Fahrenheit
celsius = [0, 20, 37, 100] fahrenheit = map(lambda c: (c * 9/5) + 32, celsius) print(list(fahrenheit))
Kết quả:
[32.0, 68.0, 98.6, 212.0]
Giải thích:
- Hàm
lambda c: (c * 9/5) + 32chuyển đổi nhiệt độ từ Celsius sang Fahrenheit theo công thức chuẩn.
4. Tổng kết
Hàm map() trong Python giúp xử lý dữ liệu một cách linh hoạt và hiệu quả hơn. Một số điểm quan trọng:
- Dùng để áp dụng một hàm lên tất cả phần tử của một iterable.
- Có thể dùng với hàm có sẵn, hàm tùy chỉnh hoặc lambda function.
- Hỗ trợ làm việc với nhiều iterable khác nhau.
- Ứng dụng rộng rãi trong xử lý chuỗi, tính toán số học, làm sạch dữ liệu, v.v.
Việc sử dụng map() giúp tối ưu hóa việc xử lý dữ liệu trong Python, giúp mã nguồn ngắn gọn và hiệu quả hơn.
