Hàm map() trong Python – Cách sử dụng và ứng dụng thực tế

hướng dẫn học python tìm hiểu ngôn ngữ lập trình python nguyễn Đức mùi

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.

hướng dẫn học python tìm hiểu ngôn ngữ lập trình python nguyễn Đức mùi

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ách s, 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ách a.
  • map() áp dụng hàm này lên toàn bộ danh sách a.

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 * 2 giúp nhân đôi giá trị của mỗi phần tử trong danh sách a.

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 + y nhận hai giá trị từ danh sách ab để 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.strip loạ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) + 32 chuyể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.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Hotline: 039.2266.928
Khóa học Toefl
Phone now