Hàm map() dùng để áp dụng một hàm lên từng phần tử của một danh sách (hoặc iterable khác) và trả về kết quả mới.
Cú pháp hàm map:
map(function, iterable)Trong đó:
Hàm map() không trả về list ngay mà trả về một đối tượng map object, thường cần đổi sang list bằng hàm list().
map sẽ lấy từng phần tử trong danh sách, đưa vào hàm, rồi tạo ra kết quả mới.
Ví dụ nhân đôi từng số:
Có biến data = [1, 2, 3, 4]
Yêu cầu: nhân đôi giá trị các phần tử trong biến list
Dùng cách truyền thống
def nhan_doi(x):
return x * 2
data = [1, 2, 3, 4]
kq = []
for x in data:
kq.append(nhan_doi(x))
print(kq)Dùng cách map python
def nhan_doi(x):
return x * 2
data = [1, 2, 3, 4]
kq = list(map(nhan_doi, data))
print(kq)Kết quả:
[2, 4, 6, 8]Giải thích:
Thường người ta kết hợp map + lambda để viết ngắn gọn.
Ví dụ:
data = [1, 2, 3, 4]
kq = list(map(lambda x: x * 3, data))
print(kq)Kết quả:
[3, 6, 9, 12]Giải thích: lambda tạo hàm nhanh, lấy x rồi nhân 3.
Chuyển danh sách chuỗi thành số nguyên.
data = ["10", "20", "30"]
nums = list(map(int, data))
print(nums)Kết quả:
[10, 20, 30]Giải thích:
| Trường hợp | Ví dụ |
|---|---|
| Chuyển kiểu dữ liệu | Chuỗi thành số nguyên |
| Xử lý hàng loạt | Nhân đôi, cộng thêm, đổi chữ hoa |
| Kết hợp nhập liệu | input().split() + map() |
Ví dụ nhập nhanh nhiều số:
data = input().split()
nums = list(map(int, data))
print(nums)Nếu nhập:
10 20 30Kết quả:
[10, 20, 30]| map() | for |
|---|---|
| Ngắn gọn | Dài hơn |
| Phù hợp xử lý đơn giản | Linh hoạt hơn |
| Hay đi với lambda | Dễ đọc cho người mới |
Ví dụ dùng for:
data = [1, 2, 3]
kq = []
for x in data:
kq.append(x * 2)
print(kq)Kết quả:
[2, 4, 6]Nên dùng map() khi:
Không nên dùng khi logic phức tạp nhiều điều kiện, lúc đó dùng for sẽ dễ đọc hơn.
Tìm kiếm:
Hướng dẫn chi tiết hàm map trong Python