Hàm map() của Python

Category: Python

Hàm map() được sử dụng để áp dụng một hàm nhất định cho mọi mục của một đối tượng lặp , chẳng hạn như list hoặc tuple , và trả về một đối tượng map() (là một trình lặp).

Chúng ta hãy bắt đầu bằng một ví dụ đơn giản về việc sử dụng map() để 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))

Đầu ra:

[1, 2, 3, 4]

Giải thích: Ở đây, chúng ta sử dụng hàm int tích hợp để chuyển đổi từng chuỗi trong danh sách thành số nguyên. Hàm map() đảm nhiệm việc áp dụng int() cho mọi phần tử.

Cú pháp của hàm map()

Cú pháp của hàm map() như sau:

map(hàm, có thể lặp lại)

Tham số:

  • hàm: Hàm mà chúng ta muốn áp dụng cho mọi phần tử của phần tử lặp lại.

  • iterable: Đối tượng có thể lặp lại mà chúng ta muốn xử lý các phần tử của nó.

Lưu ý: Chúng ta cũng có thể truyền nhiều đối số lặp nếu hàm của chúng ta chấp nhận nhiều đối số.

Chuyển đổi đối tượng bản đồ thành danh sách

Theo mặc định, hàm map() trả về một đối tượng map , là một iterator . Trong nhiều trường hợp, chúng ta sẽ cần chuyển đổi iterator này thành một danh sách để làm việc trực tiếp với kết quả.

Ví dụ: Chúng ta hãy xem cách nhân đôi từng phần tử trong danh sách đã cho.

a = [1, 2, 3, 4]

# Sử dụng hàm tự định nghĩa trong tham số "function"
# Hàm này đơn giản chỉ nhân đôi giá trị được truyền vào
def double(val):
  return val * 2

res = list(map(double, a))
print(res)

Đầu ra:

[2, 4, 6, 8]

Giải thích:

  • Hàm map () trả về một trình lặp, sau đó chúng ta chuyển đổi nó thành một danh sách bằng cách sử dụng list(). Đây là một thực hành phổ biến khi làm việc với map()

  • Chúng tôi đã sử dụng một hàm tùy chỉnh để nhân đôi mỗi giá trị trong danh sách a . Kết quả đã được ánh xạ và chuyển đổi thành một danh sách để hiển thị dễ dàng.

map() với lambda

Chúng ta có thể sử dụng hàm lambda thay vì hàm tùy chỉnh với map() để làm cho mã ngắn hơn và dễ hơn. Hãy cùng xem cách cải thiện mã trên để dễ đọc hơn.

a = [1, 2, 3, 4]

# Sử dụng hàm lambda trong tham số "function"
# để nhân đôi mỗi số trong danh sách
res = list(map(lambda x: x * 2, a))
print(res)

Đầu ra:

[2, 4, 6, 8]

Giải thích: Chúng tôi sử dụng lambda x: x * 2 để nhân đôi mỗi giá trị trong danh sách a . Kết quả được ánh xạ và chuyển đổi thành danh sách để hiển thị dễ dàng.

Sử dụng map() với nhiều đối tượng lặp lại

Chúng ta có thể sử dụng map() với nhiều đối tượng lặp nếu hàm chúng ta đang áp dụng có nhiều hơn một đối số.

Ví dụ: Trong ví dụ này, map() lấy hai phần tử lặp ( ab ) và áp dụng hàm lambda để thêm các phần tử tương ứng từ cả hai danh sách.

a = [1, 2, 3]
b = [4, 5, 6]
res = map(lambda x, y: x + y, a, b)
print(list(res))

Đầu ra:

[5, 7, 9]

Ví dụ về hàm map()

Chuyển đổi sang chữ hoa

Ví dụ này cho thấy cách chúng ta có thể sử dụng map() để chuyển đổi danh sách chuỗi thành chữ hoa.

fruits = ['apple', 'banana', 'cherry']
res = map(str.upper, fruits)
print(list(res))

Giải thích: Phương thức str.upper được áp dụng cho từng phần tử trong danh sách fruits bằng cách sử dụng map() . Kết quả là danh sách các phiên bản viết hoa của từng tên fruit.

Trích xuất ký tự đầu tiên từ chuỗi

Trong ví dụ này, chúng tôi sử dụng map() để trích xuất ký tự đầu tiên từ mỗi chuỗi trong danh sách.

words = ['apple', 'banana', 'cherry']
res = map(lambda s: s[0], words)
print(list(res))

Đầu ra:

['a', 'b', 'c']

Giải thích: Phương thức str.strip xóa khoảng trắng đầu và cuối khỏi mỗi chuỗi trong danh sách chuỗi. Hàm map() áp dụng str.strip cho mỗi phần tử và trả về danh sách các chuỗi đã cắt.

Tính độ F từ độ C

Trong ví dụ này, chúng tôi sử dụng map() để chuyển đổi danh sách nhiệt độ từ độ C sang độ F.

celsius = [0, 20, 37, 100]
fahrenheit = map(lambda c: (c * 9/5) + 32, celsius)
print(list(fahrenheit))

Đầu ra

[32.0, 68,0, 98,6, 212,0]

Giải thích: Hàm lambda c: (c * 9/5) + 32 chuyển đổi từng nhiệt độ Celsius sang Fahrenheit bằng công thức chuẩn. Hàm map() áp dụng phép biến đổi này cho tất cả các mục trong danh sách celsius.

Published on Jun 18, 2025