Python cung cấp một số tiện ích lập trình chức năng mặc dù nó chủ yếu là ngôn ngữ lập trình hướng đối tượng. Và đáng chú ý nhất là hàm map().
Trong bài viết này, chúng ta sẽ khám phá những gì map()
chức năng là gì và cách sử dụng nó trong mã của bạn.
Các map()
hàm (là một hàm tích hợp trong Python) được sử dụng để áp dụng một hàm cho từng mục trong một lặp đi lặp lại (như danh sách Python hoặc từ điển). Nó trả về một lần lặp mới (a đối tượng bản đồ) mà bạn có thể sử dụng trong các phần khác của mã của mình.
Cú pháp chung cho việc này là:
map(function, iterable, [iterable1, iterable2, ...])
Hãy xem một ví dụ: hãy tưởng tượng bạn có một danh sách các số và bạn muốn tạo một danh sách mới với khối của các số trong danh sách đầu tiên. Một cách tiếp cận truyền thống sẽ liên quan đến việc sử dụng vì vòng:
org_list = [1, 2, 3, 4, 5]
fin_list = []
for num in org_list:
fin_list.append(num**3)
print(fin_list) # [1, 8, 27, 64, 125]
điều này hoàn toàn hợp lệ, nhưng hãy xem cách sử dụng map()
chức năng đơn giản hóa mã của bạn:
org_list = [1, 2, 3, 4, 5]
# define a function that returns the cube of `num`
def cube(num):
return num**3
fin_list = list(map(cube, org_list))
print(fin_list) # [1, 8, 27, 64, 125]
Không biết về bạn, nhưng tôi thấy điều này hợp lý hơn nhiều.
Trong trường hợp bạn đang tự hỏi điều gì đã xảy ra đằng sau hậu trường,
map()
về cơ bản, chức năng được lặp qua từng phần tử của iterable (trong trường hợp của chúng tôi,org_list
) và áp dụng hàm lập phương trên đó. Cuối cùng nó đã trả về một lần lặp mới (fin_list
) Với kết quả.
Cách sử dụng biểu thức Lambda trong Python
Thay vì viết một hàm riêng để tính lập phương của một số, chúng ta có thể sử dụng một lamda biểu hiện ở vị trí của nó. Đây là cách bạn muốn làm điều đó:
fin_list = list(map(lambda x:x**3, org_list))
print(fin_list) # [1, 8, 27, 64, 125]
Sạch sẽ hơn nhiều, bạn có đồng ý không?
Cách sử dụng các hàm tích hợp trong Python
Bạn cũng có thể chuyển các hàm Python tích hợp sẵn. Ví dụ: nếu bạn có một danh sách các chuỗi, bạn có thể dễ dàng tạo một danh sách mới với độ dài của mỗi chuỗi trong danh sách.
org_list = ["Hello", "world", "freecodecamp"]
fin_list = list(map(len, org_list))
print(fin_list) # [5, 5, 12]
Cách sử dụng hàm với nhiều lần lặp trong Python
Cho đến nay chúng tôi đã chuyển vào map()
các hàm chỉ nhận một đối số (nhớ lại cube(num)
). Nhưng nếu hàm của bạn có nhiều đối số thì sao? Một ví dụ về điều này sẽ là pow(x, y)
hàm nhận 2 đối số (nó trả về kết quả của x^y).
Để áp dụng một hàm có nhiều đối số, chỉ cần chuyển một tên có thể lặp lại khác sau tên đầu tiên.
base = [1, 2, 3, 4]
power = [1, 2, 3, 4]
result = list(map(pow, base, power))
print(result) # [1, 4, 27, 256]
Trong bài viết này, bạn đã học cách làm việc với map()
chức năng trong Python. Bạn cũng đã thấy cách nó có thể giảm đáng kể kích thước mã của bạn, giúp mã dễ đọc hơn và không có lỗi.
Bây giờ bạn sẽ cảm thấy thoải mái khi làm việc với map()
sử dụng các hàm tích hợp sẵn, biểu thức lambda và thậm chí cả hàm tùy chỉnh của riêng bạn!
Chắc chắn rằng theo dõi tôi trên Twitter để cập nhật các bài viết trong tương lai. Có một cái tốt đẹp!