Đang thực hiện
Tên đăng nhập
Mật khẩu
 
Hoặc đăng nhập bằng:
Nhập lại mật khẩu

Trang chủ Tin tổng hợp
Tin tổng hợp

Hướng dẫn sử dụng Map() trong Python

Cập nhật: 23/11/2019 Lượt xem: 5511
Hàm map() trong Python áp dụng một hàm khác trên một tập hợp đã cho (List / String / Dictionary, v.v.) và trả về map object. Trong hướng dẫn này, mình sẽ hướng dẫn bạn cách sử dụng hàm map().
Hướng dẫn sử dụng hàm map() trong PythonHướng dẫn sử dụng hàm map() trong Python

Hàm map() trong Python áp dụng một hàm khác trên một tập hợp đã cho (List / String / Dictionary, v.v.) và trả về map object.


Nói một cách đơn giản, nó đi qua list, gọi hàm cho từng phần tử và trả về kết quả.


Map object trong Python cũng có thể lặp lại giữ danh sách của mỗi lần lặp.


Chúng ta cũng có thể chuyển đổi nó thành List hoặc Dictionary hoặc các loại khác bằng cách sử dụng các hàm constructor của chúng.


Trong hướng dẫn này, mình sẽ hướng dẫn bạn cách sử dụng hàm map().


Ngoài ra, bạn có thể tham khảo các ví dụ mà mình đã thêm vào để hiểu rõ hơn.


 

1. Giải thích về hàm map() trong Python

 

1.1 Cú pháp hàm map() trong Python

 
# Cú pháp hàm map() trong Python
map(in_function, iterable1[, iterable2, iterable3, ...])


Hàm map() có ít nhất hai tham số. Đối số đầu tiên là một hàm do người dùng định nghĩa và sau đó một hoặc nhiều kiểu lặp.


Nếu bạn chỉ truyền một lần lặp, thì map() gọi hàm cho từng phần tử của nó và trả về map object với kết quả.


Tuy nhiên, nếu bạn cung cấp nhiều lần lặp, thì hàm sẽ được gọi với mỗi phần tử của chúng làm đối số. Trong trường hợp này, lệnh gọi map() dừng sau khi kết thúc đối số lặp lại ngắn nhất.


 

1.2 Ví dụ hàm map() trong Python



Bây giờ chúng ta sẽ đưa ra một số ví dụ bằng cách sử dụng map() để bạn có thể hiểu rõ những gì nó làm và cách bạn nên sử dụng nó.


Nhưng trước khi bắt đầu, chúng ta cần tạo một hàm do người dùng định nghĩa mà chúng ta có thể chuyển làm đối số đầu tiên cho hàm map(). Vì vậy, đây là hàm chúng ta cần:


 
# Hàm do người dùng định nghĩa để truyền vào hàm map()
# trong vị trí đối số đầu tiên
def getLength(iterable):
    return len(iterable)
 

Hàm chúng ta vừa tạo tính toán độ dài của iterable và trả về trong một map object.


Dưới đây là một phương thức để in ra map object. Chúng ta sẽ sử dụng nó trong tất cả các ví dụ của chúng ta.


 
# Hàm để in map ra
def show_result(map_object):
    for item in map_object:
        print(item, end=' ')
    print('')  # Cho dòng mới
 


Ngoài ra, chúng ta sẽ sử dụng một hàm chung hơn để in iterable.

 

# Hàm chung để in iterable và nội dung của nó
def print_Iter(iter_in):
    if isinstance(iter_in, str):
        print("Đầu vào, '{}' là một String. Chiều dài là {}.".format(iter_in, len(iter_in)))
    if isinstance(iter_in, (list, tuple, set)):
        print("Đầu vào, {} làm một {}. Nó có {} phần tử.".format(iter_in, type(iter_in).__name__, len(iter_in)))
        for item in iter_in:
            print("{} chứa '{}' và có độ dài là {}.".format(type(iter_in).__name__, item, len(item)))
    if isinstance(iter_in, dict):
        print("Đầu vào, {} là một {}. Nó có {} phần tử.".format(iter_in, type(iter_in).__name__, len(iter_in)))
        for key, value in iter_in.items():
            print("Dict key là '{}' và value là {}.".format(key, value))


 

2. Sử dụng hàm map() với các kiểu dữ liệu


 

2.1 Sử dụng hàm map() với String



Đoạn code dưới đây truyền kiểu Chuỗi lặp vào map() và in kết quả.


 


"""
 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)



Xin lưu ý rằng bạn sẽ cần thêm định nghĩa của print_Iter()getLength() và show_result() trong ví dụ trên. Sau đó, bạn có thể chạy nó. Đầu ra là:

 
Đầ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
 

2.2 Sử dụng hàm map() với List



Đoạn code dưới đây cho thấy cách sử dụng List với hàm map().
 
 
"""
 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ả nhận được là:

 
Đầ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
 

2.3 Sử dụng hàm map() với tuple



Trong ví dụ này, chúng ta đang sử dụng một tuple để truyền vào hàm map().

 
"""
 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)
 

Kết quả nhận được 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
 

2.4 Sử dụng hàm map() với set



Ở đây, chúng ta đang sử dụng một set để truyền vào hàm map() và sẽ xem cách nó hoạt động.


 

"""
 Desc:
  Sử dụng hàm map() trong Python với một set
"""

# Xem set như là một tham số lặp
iter_Set = {"Python", "CSharp", "Java"}
print_Iter(iter_Set)

# Gọi hàm map() trên một set
map_result =  map(getLength, iter_Set)
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ả nhận được là:


 
Đầu vào, {'CSharp', 'Python', 'Java'} là một set. Nó có 3 phần tử.
set chứa 'CSharp' và có độ dài là 6.
set chứa 'Python' và có độ dài là 6.
set chứa 'Java' và có độ dài là 4.
Kiểu của map_result là 
Độ dài là: 
6 6 4
 
 

2.5 Sử dụng hàm map() với Dict



Cuối cùng, chúng ta sẽ áp dụng hàm map() cho một kiểu Dict và xem nó hoạt động như thế nào.

 
"""
 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ả là:


 

Đầ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
 
 

3. Sử dụng hàm constructor để chuyển đổi map()



Trước đó, mình đã nói rằng bạn có thể sử dụng các hàm constructor để chuyển đổi map() thành danh list, tuple, set, ...


Vì thế, hãy cùng xem cách làm ở bên dưới đây:


 

"""
 Desc:
  Chương trình Python chuyển đổi map object thành list, tuple và set
"""

# Hàm người dùng tự định nghĩa để truyền vào map()
# như là tham số đầu tiên
def getLength(iterable):
    return len(iterable)

# Hàm để in map() ra
def show_result(iter_in):
    print("****************************")
    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))

# Chuyển đổi map object thành một list
map_result =  map(getLength, ["Python", "JavaScript", "Java"])
to_list = list(map_result)
show_result(to_list)

# Chuyển đổi map object thành một tuple
map_result =  map(getLength, ["Python", "JavaScript", "Java"])
to_tuple = tuple(map_result)
show_result(to_tuple)

# Chuyển đổi map object thành một set
map_result =  map(getLength, ["Python", "JavaScript", "Java"])
to_set = set(map_result)
show_result(to_set)


Kết quả nhận được như sau:

 
****************************
Đầu vào, [6, 10, 4] là một list.
list chứa '6'.
list chứa '10'.
list chứa '4'.
****************************
Đầu vào, (6, 10, 4) là một tuple.
tuple chứa '6'.
tuple chứa '10'.
tuple chứa '4'.
****************************
Đầu vào, {10, 4, 6} là một set.
set chứa '10'.
set chứa '4'.
set chứa '6'.

 

4. Sử dụng hàm map() với anonymous Function



Nếu bạn đã  từng Học Python, chắc bạn biết đến hàm ẩn dành (Anonymous Function). Trong lệnh gọi map(), chúng ta có thể gửi nó làm tham số đầu tiên.


Hàm này là nội tuyến và chúng ta có thể dễ dàng triển khai hàm length bằng cách sử dụng nó. Hãy xem ví dụ dưới đây:


 
"""
 Desc:
  Chương trình sử dụng Anonymous Function với hàm map()
"""

# Hàm để in ra map
def show_result(iter_in):
    print("****************************")
    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 funtion với map()
map_result =  map(lambda item: len(item), ["Python", "JavaScript", "Java"])
to_list = list(map_result)
show_result(to_list)
 


Kết quả chúng ta nhận được là:


 
****************************
Đầu vào, [6, 10, 4] là một list.
list chứa '6'.
list chứa '10'.
list chứa '4'.
 

5. Sử dụng map() với nhiều lần lặp



Trong ví dụ này, chúng ta sẽ trình bày cách chuyển nhiều hàm lặp sang hàm map(). Kiểm tra ví dụ dưới đây.

 
"""
 Desc:
  Chưa trình sử dụng Anonymous Function với map()
"""

# Hàm để in ra map
def show_result(iter_in):
    print("****************************")
    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)
 


Kết quả nhận được:
 
****************************
Đầ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 Anonymous Function đang lấy ba đối số khi chúng ta đang sử dụng ba lần lặp. Ngoài ra, ngắn nhất trong số họ là có ba phần tử. Do đó, nó được gọi là ba lần.

 

Bạn đã hiểu về cách sử dụng map() trong Python chưa?



Mình hy vọng rằng sau khi hoàn thành hướng dẫn này, bạn sẽ cảm thấy thoải mái khi sử dụng hàm map() trong Python. Tuy nhiên, bạn có thể thực hành nhiều hơn với các ví dụ để thực sự thuần thục với map().
 
0914.939.543
Tư vấn viên 1: Linh Trang
0243.557.4074
Tư vấn viên 2: Minh Đức
Tuyển sinh lập trình viên quốc tế - MMS new vision
Khóa học C&B Excel - Trần Văn Hải