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á hàm
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]
1 là gì và cách sử dụng nó trong mã của bạnHàm map[] trong PythonHàm
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]
1 [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ần lặp [như danh sách Python hoặc từ điển]. Nó trả về một iterable mới [một đố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ìnhCú 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 các 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òng lặp for
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 hàm
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]
1 để đơn giản hóa mã của bạnorg_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 thắc mắc điều gì đã xảy ra đằng sau hậu trường, thì hàm1 về cơ bản được lặp qua từng phần tử của iterable [trong trường hợp của chúng tôi là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]
0] và áp dụng hàm cube trên đó. Cuối cùng, nó đã trả về một lần lặp mới [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]
1 ] với kết quả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]
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 biểu thức lambda thay cho 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 vào các hàm Python tích hợp. 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 giờ chúng ta đã chuyển sang hàm
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]
1 chỉ nhận một đối số [nhớ lại hàm 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]
3]. Nhưng nếu hàm của bạn có nhiều đối số thì sao? Để á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]
Kết thúcTrong bài viết này, bạn đã học cách làm việc với hàm
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]
1 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ỗiGiờ đây, bạn có thể thoải mái làm việc với
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]
1 bằng cách 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ạnHãy nhớ theo dõi tôi trên Twitter để cập nhật các bài viết trong tương lai. chúc bạn vui vẻ
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nhà nghiên cứu AI @Harvard, Giáo viên @freeCodeCamp. Trình biên dịch bán thời gian Warlock
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Bản đồ Python[] áp dụng một hàm trên tất cả các mục của trình vòng lặp được cung cấp làm đầu vào. Ví dụ, một iterator có thể là một danh sách, một tuple, một tập hợp, một từ điển, một chuỗi và nó trả về một đối tượng bản đồ có thể lặp lại. Bản đồ Python[] là một chức năng tích hợp
Trong hướng dẫn này, bạn sẽ học
cú pháp
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]
0Thông số
Đây là hai điều quan trọng
- chức năng. Một chức năng bắt buộc được cung cấp cho bản đồ, chức năng này sẽ được áp dụng cho tất cả các mục có sẵn trong trình vòng lặp
- trình vòng lặp. Một đối tượng bắt buộc có thể lặp lại. Nó có thể là một danh sách, một tuple, v.v. Bạn có thể chuyển nhiều đối tượng lặp vào hàm map[]
Giá trị trả về
Hàm map[] sẽ áp dụng hàm đã cho trên tất cả các mục bên trong trình vòng lặp và trả về một đối tượng bản đồ có thể lặp lại i. một tuple, một danh sách, v.v.
Hàm map[] hoạt động như thế nào?
Hàm map[] nhận hai đầu vào là một hàm và một đối tượng có thể lặp lại. Hàm được cấp cho map[] là một hàm bình thường và nó sẽ lặp lại trên tất cả các giá trị có trong đối tượng có thể lặp lại đã cho
Ví dụ: giả sử bạn có một danh sách các số và bạn muốn tìm bình phương của mỗi số
Để có được đầu ra, chúng ta cần hàm trả về bình phương của một số đã cho. Chức năng sẽ như sau
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]
1Danh sách các mục mà chúng tôi muốn tìm hình vuông như sau
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]
2Bây giờ, chúng ta hãy sử dụng hàm tích hợp map[] của python để lấy bình phương của từng mục trong my_list
Mã cuối cùng như sau
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]
3đầu ra
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]
4The output of the map[] function, as seen in the output, is a map object displayed on the screen as .
Bạn sẽ phải lặp lại đầu ra từ bản đồ bằng vòng lặp for hoặc sử dụng phương thức list[] để có được đầu ra cuối cùng. Tôi đã sử dụng list[] trong mã hiển thị các giá trị bên trong danh sách đã cho
Vì vậy, sử dụng hàm map[], chúng ta có thể lấy bình phương của mỗi số. Danh sách được cung cấp cho map là [2,3,4,5,6,7,8,9] và sử dụng hàm square[], đầu ra từ map[] chúng tôi nhận được là [4, 9, 16, 25, 36,
Hàm map[] áp dụng hàm square[] trên tất cả các mục trong danh sách. Ví dụ: biến my_list và cập nhật danh sách với bình phương của mỗi số. Out được lưu trữ trong biến updated_list
Sử dụng map[] với các hàm tích hợp sẵn của Python
Hàm map[] trong Python là một hàm dựng sẵn và cũng có thể được sử dụng với các hàm dựng sẵn khác có sẵn trong Python. Trong ví dụ này, chúng ta sẽ sử dụng hàm có sẵn round[] của Python để làm tròn các giá trị đã cho
Ví dụ
Danh sách mà tôi có là my_list = [2. 6743,3. 63526,4. 2325,5. 9687967,6. 3265,7. 6988,8. 232,9. 6907]
Tôi cần các giá trị được làm tròn cho từng mục có trong danh sách. Chúng ta sẽ sử dụng round[] làm hàm map[]
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]
5đầu ra
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]
6Hàm round[] được áp dụng cho tất cả các mục trong danh sách và nó trả về một danh sách với tất cả các giá trị được làm tròn như thể hiện ở đầu ra
Sử dụng map[] với một chuỗi làm trình vòng lặp
Chúng ta cũng có thể sử dụng map[] trên một chuỗi. Trong Python, string đóng vai trò như một mảng nên chúng ta có thể dễ dàng sử dụng nó bên trong map[]
Trong ví dụ này, chúng ta có một hàm myMapFunc[] đảm nhiệm việc chuyển đổi chuỗi đã cho thành chữ hoa. Hàm myMapFunc[] được gán cho hàm map[]. Hàm map sẽ đảm nhiệm việc chuyển đổi chuỗi đã cho thành chữ hoa bằng cách chuyển chuỗi tới myMapFunc[]
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]
7đầu ra
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]
8Sử dụng map[] với danh sách các số
Để làm việc với danh sách trong map[] sẽ lấy một danh sách các số và nhân mỗi số trong danh sách với 10
Danh sách mà chúng ta sẽ sử dụng là. [2,3,4,5,6,7,8,9]. Hàm myMapFunc[] đảm nhiệm việc nhân số đã cho với 10. Chức năng được đưa ra để ánh xạ cùng với danh sách
Ví dụ
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]
9đầu ra
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]
10Kết quả chúng ta thấy là mỗi số trong danh sách là
nhân với 10
Sử dụng map[] với Tuple
Tuple là một đối tượng trong Python có các mục được phân tách bằng dấu phẩy và được đặt trong dấu ngoặc tròn. Trong ví dụ này, chúng ta sẽ lấy một bộ có giá trị chuỗi. Hàm mà chúng ta sẽ sử dụng sẽ chuyển đổi các giá trị đã cho thành chữ hoa
Ví dụ
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]
11đầu ra
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]
12Đầu ra chúng tôi nhận được là một tuple back với tất cả các giá trị trong đó được chuyển đổi thành chữ hoa
Sử dụng map[] với Dictionary
Một từ điển trong Python được tạo bằng cách sử dụng dấu ngoặc nhọn [{}]. Vì từ điển là một trình vòng lặp, bạn có thể sử dụng nó bên trong hàm map[]. Bây giờ chúng ta hãy sử dụng từ điển làm trình vòng lặp bên trong hàm map[]
Ví dụ sau cho thấy hoạt động của trình lặp từ điển bên trong map[]
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]
13đầu ra
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]
14Sử dụng map[] với Set
Đặt trong Python là một tập hợp các mục không có thứ tự trong dấu ngoặc nhọn [[]]. Vì set[] cũng là một iterator, nên bạn có thể sử dụng nó bên trong hàm map[]
Đây là một ví dụ hoạt động về việc sử dụng set làm trình vòng lặp bên trong map[]
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]
15đầu ra
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]
16Sử dụng map[] với chức năng Lambda
Trong Python, các biểu thức lambda được sử dụng để xây dựng các hàm ẩn danh. Bạn sẽ phải sử dụng từ khóa lambda giống như khi bạn sử dụng def để xác định các chức năng thông thường
Vì vậy, trong ví dụ này, chúng ta sẽ sử dụng hàm lambda bên trong map[]. Hàm lambda sẽ nhân từng giá trị trong danh sách với 10
Ví dụ
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]
17đầu ra
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]
18Sử dụng nhiều Iterator bên trong hàm map[]
ví dụ 1. Chuyển hai trình vòng lặp danh sách tới map[]
Bạn có thể gửi nhiều hơn một iterator i. e. một danh sách, một bộ dữ liệu, v.v. tất cả cùng một lúc vào hàm map[]
Ví dụ, nếu bạn muốn thêm hai danh sách. Điều tương tự cũng có thể được thực hiện bằng hàm map[]. Chúng tôi sẽ sử dụng hai danh sách my_list1 và my_list2
Trong ví dụ bên dưới, mục đầu tiên trong my_list1 được thêm vào mục đầu tiên của my_list2. Hàm myMapFunc[] lấy các mục của my_list1 và my_list2 và trả về tổng của cả hai
Dưới đây là ví dụ hoạt động về việc thêm hai danh sách đã cho bằng hàm map[]
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]
19đầu ra
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]
20ví dụ 2. Truyền một Tuple và một trình lặp danh sách tới map[]
Chúng ta sẽ sử dụng một danh sách và một bộ lặp tuple trong hàm map[]. Chức năng được cung cấp cho bản đồ – myMapFunc[] sẽ lấy các mục từ danh sách và Tuple. Các mục sẽ được nối với dấu gạch dưới [_]. Ví dụ làm việc như hình dưới đây