Python được biết đến là ngôn ngữ lập trình đa dạng và linh hoạt. Lập trình Python chứa rất nhiều hàm hữu ích để xử lý dữ liệu, điển hình có thể kể đến là hàm map. Qua bài viết ngày hôm nay, chúng ta sẽ cùng nhau tìm hiểu về hàm map trong Python, cú pháp hàm map cũng như cách kết hợp hàm map với các kiểu dữ liệu khác nhau.
Ở phần đầu tiên, chúng ta sẽ lần lượt tìm hiểu hàm map là gì, cú pháp của hàm map và các trường hợp ta cần sử dụng hàm map trong Python.
Hàm map là hàm được tích hợp sẵn trong Python. Lập trình viên sử dụng hàm map để duyệt tất cả phần tử, điều kiện là các phần tử này phải thuộc 1 interable đã cho (list, dictionary, tuple…). Kết quả trả về là 1 tập hợp mới.
Hiểu một cách đơn giản hơn, hàm map đi qua danh sách đã có, gọi hàm cho từng phần tử tương ứng và trả về danh sách kết quả cuối cùng.
Hàm map trong Python có cú pháp như sau:
map(fuction, interable)
Trong đó bao gồm các tham số:
Chúng ta hãy cùng làm một số ví dụ về cách áp dụng hàm map như sau:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x**2, numbers)
print(list(squares))
# Output: [1, 4, 9, 16, 25]
Lưu ý: hàm lambda x: x**2 làm hàm tính bình phương của mỗi phần tử trong danh sách.
list1 = [1, 2, 3, 4]
list2 = [10, 20, 30, 40]
sum_list = map(lambda x, y: x + y, list1, list2)
print(list(sum_list))
# Output: [11, 22, 33, 44]
Ở đây bạn sẽ thấy xuất hiện hàm lambda x, y: x + y, hàm này được dùng để tính tổng từng cặp phần tử của list 1 và list 2.
Bạn sử dụng hàm map trong các trường hợp sau:
Ở phần này, chúng ta sẽ cùng nhau tìm hiểu cách kết hợp hàm map với các kiểu dữ liệu khác thông qua các ví dụ cụ thể.
Bạn hãy xem ví dụ dưới đây về cách kết hợp hàm map với list:
"""
Desc:
Sử dụng hàm map() trong Python với List
"""
# Xem List như là một tham số lặp
iter_List = ["Python", "CSharp", "Java"]
print_Iter(iter_List)
# Gọi hàm map() trên một list
map_result = map(getLength, iter_List)
print("Kiểu của map_result là {}".format(type(map_result)))
# In map()
print("Lengths are: ")
show_result(map_result)
Kết quả trả về:
Đầu vào, ['Python', 'CSharp', 'Java'] là một list. Nó có 3 phần tử.
list chứa 'Python' và có độ dài là 6.
list chứa 'CSharp' và có độ dài là 6.
list chứa 'Java' và có độ dài là 4.
Kiểu của map_result là
Độ dài là:
6 6 4
Cú pháp kết hợp hàm map trong Python với kiểu dữ liệu string như sau:
"""
Desc:
Sử dụng hàm map() trong Python với một String
"""
# Xem chuỗi như là một tham số lặp
iter_String = "Python"
print_Iter(iter_String)
# Gọi hàm map() trên một Chuỗi
map_result = map(getLength, iter_String)
print("Kiểu của map_result là {}".format(type(map_result)))
# In map()
print("Độ dài là: ")
show_result(map_result)
Kết quả trả về tương ứng:
Đầu vào, 'Python' là một String. Chiều dài là 6.
Kiểu của map_result là
Độ dài là:
1 1 1 1 1 1
Lưu ý: để có được kết quả trả về như trên, bạn sẽ cần bổ sung định nghĩa về print_Iter(), getLength() và show_result().
Chúng ta sẽ sử dụng 1 tuple để truyền vào hàm map. Cụ thể, bạn hãy cùng xem ví dụ dưới đây:
"""
Desc:
Sử dụng hàm map() trong Python với một tuple
"""
# Xem tuple như là một tham số lặp
iter_Tuple = ("Python", "CSharp", "Java")
print_Iter(iter_Tuple)
# Gọi hàm map() trên một tuple
map_result = map(getLength, iter_Tuple)
print("Kiểu của map_result là {}".format(type(map_result)))
# In map()
print("Độ dài là: ")
show_result(map_result)
Sau khi câu lệnh chạy, hệ thống ghi nhận kết quả trả về là:
Đầu vào, ('Python', 'CSharp', 'Java') là một tuple. Nó có 3 phần tử.
tuple chứa 'Python' và có độ dài là 6.
tuple chứa 'CSharp' và có độ dài là 6.
tuple chứa 'Java' và có độ dài là 4.
Kiểu của map_result là
Độ dài là:
6 6 4
Chúng ta hãy cùng xem câu lệnh sử dụng hàm map cho kiểu dictionary thông qua ví dụ:
"""
Desc:
Sử dụng hàm map() trong Python với một Dict
"""
# Xem Dict như là một tham số lặp
iter_Dict = {"Python":0, "CSharp":0, "Java":0}
print_Iter(iter_Dict)
# Gọi hàm map() trên một Dict
map_result = map(getLength, iter_Dict)
print("Kiểu của map_result là {}".format(type(map_result)))
# In map()
print("Độ dài là: ")
show_result(map_result)
Kết quả thu được như sau:
Đầu vào, {'Java': 0, 'CSharp': 0, 'Python': 0} là một dict. Nó có 3 phần tử.
Dict key là 'Java' và value là 0.
Dict key là 'CSharp' và value là 0.
Dict key là 'Python' và value là 0.
Kiểu của map_result là
Độ dài là:
4 6 6
Ở phần này, chúng tôi sẽ hướng dẫn bạn cách dùng hàm map để chuyển nhiều hàm lặp sang đó. Bạn hãy quan sát ví dụ mẫu dưới đây của chúng tôi:
# Hàm để in ra map
def show_result(iter_in):
print("Đầu vào, {} là một {}.".format(iter_in, type(iter_in).__name__))
for item in iter_in:
print("{} chứa '{}'.".format(type(iter_in).__name__, item))
# Sử dụng Anonymous Function với map()
map_result = map(lambda arg1, arg2, arg3: [len(arg1), len(arg2), len(arg3)], ["Python", "JavaScript", "Java"], ("Go", "C", "C++", "Pascal"), {"Delphi", "VC++", "PHP", "MySQL", "MariaDB"})
to_list = list(map_result)
show_result(to_list)
Từ câu lệnh trên, chúng ta có được kết quả trả về như sau:
Đầu vào, [[6, 2, 6], [10, 1, 7], [4, 3, 4]] là một list.
list chứa '[6, 2, 6]'.
list chứa '[10, 1, 7]'.
list chứa '[4, 3, 4]'.
Bạn có thể thấy ta đang sử dụng 3 lần lặp, Anonymous Function đang lấy ra 3 đối số khi chúng ta thực hiện câu lệnh.
Đến đây chắc hẳn bạn đã hiểu phần nào về hàm map trong Python cũng như cách sử dụng hàm map. Bên cạnh việc tìm hiểu lý thuyết của hàm map, bạn cần thực hành thường xuyên để ngày càng thành thạo hơn. Nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay khóa học Python tại ICANTECH nhé
Nguồn ảnh: ICANTECH