Hàm map để lặp các đối tượng trong Python
Giả sử chúng ta có hàm square để
tính bình phương các số. Và có một danh sách,
mà các phần tử của nó cần áp dụng
hàm này:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
Trong Python để giải quyết nhiệm vụ này, có thể
sử dụng hàm đặc biệt map.
Nó nhận làm tham số là một hàm và một danh sách,
mà các phần tử của nó cần được áp dụng hàm đó.
Hãy sử dụng map để giải quyết
ví dụ:
res = map(square, lst)
print(res)
Mỗi danh sách cũng như bất kỳ đối tượng phức tạp nào đều chiếm nhiều chỗ trong bộ nhớ hệ thống của Python. Vì vậy để tiết kiệm tài nguyên, sau khi thực thi mã sẽ trả về không phải một danh sách mới, mà là một đối tượng map có thể lặp đặc biệt:
<map object at 0x000001F16674BA00>
Hãy lặp qua nó bằng vòng lặp:
for el in res:
print(el)
Kết quả sẽ hiển thị tất cả các phần tử của danh sách mới:
4
9
36
64
225
Để tạo một danh sách mới từ đối tượng map,
cần áp dụng hàm list vào nó:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Kết quả sẽ hiển thị danh sách sau:
[4, 9, 36, 64, 225]
Ngoài ra khi làm việc với hàm map,
trong tham số đầu tiên có thể đặt một hàm lambda.
Hãy viết lại ví dụ trước với
sự trợ giúp của hàm lambda:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Viết lại mã sau qua hàm lambda:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Viết lại mã sau qua hàm lambda:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))